[英]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.