[英]Assign value (stemming from configuration table) to group based on condition in column
我有一個data.table DT1
,每個區域包含一個值。 在配置表DT2
,我將每個區域的每個值映射到變量number_carrots
。
是否有一種優雅的data.table方法,可以根據DT2
的映射向DT1
中添加一列( number_carrots
)? 我只能通過循環來做到這一點...
舉個例子。 DT1
是:
library(data.table)
region1 = c('Europe', 'Europe', 'Africa', 'Africa', 'Europe', 'Africa')
value1 = c(1, 2, 1, 2, 3, 1)
DT1 = data.table(region1, value1)
> DT1
region1 value1
1: Europe 1
2: Europe 2
3: Africa 1
4: Africa 2
5: Europe 3
6: Africa 1
DT2
是:
region2 = rep(c('Europe', 'Africa'), each = 3)
value2 = c(1:3, 1:3)
number_carrots = c(10, 20, 30, 5, 15, 30)
DT2 = data.table(region2, value2, number_carrots)
> DT2
region2 value2 number_carrots
1: Europe 1 10
2: Europe 2 20
3: Europe 3 30
4: Africa 1 5
5: Africa 2 15
6: Africa 3 30
使用從DT2
映射,我想向DT1
添加一列number_carrots
:
> DT1
region1 value1 number_carrots
1: Europe 1 10
2: Europe 2 20
3: Africa 1 5
4: Africa 2 15
5: Europe 3 30
6: Africa 1 5
OP已請求向DT1
添加一列number_carrots
。
這可以通過更新 DT1
通過引用修改DT1
來解決
DT1[DT2, on = .(region1 = region2, value1 = value2), number_carrots := i.number_carrots]
DT1
region1 value1 number_carrots 1: Europe 1 10 2: Europe 2 20 3: Africa 1 5 4: Africa 2 15 5: Europe 3 30 6: Africa 1 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.