[英]R - Join on data.table, selecting a different column based on value of another column in row
我有两个data.tables:
DT1 <- data.table(A=c('A', 'B', 'C'), idx=c(1,2,3))
DT2 <- data.table(idx=c(1,2,3), A=rep('foo', 3), B=rep('bar', 3), C=rep('baz', 3))
> DT1
A idx
1: A 1
2: B 2
3: C 3
> DT2
idx A B C
1: 1 foo bar baz
2: 2 foo bar baz
3: 3 foo bar baz
我想得到这个:
> DT3
idx value
1: 1 foo
2: 2 bar
3: 3 baz
基本上,我想在idx
上合并DT1
和DT2
,但是我只希望DT2
中的列对应于DT1
行中A
的值。 DT1和DT2具有相同的行数,并且行中的顺序相同
有没有data.table本机方法可以做到这一点?
在将旧的(隐式) by-without-by
功能替换为by=.EACHI
(也使用on=
参数而不是设置键)更新了答案:
require(data.table) # v1.9.6+
DT2[DT1, .(value=get(i.A)), on="idx", by=.EACHI]
# idx value
# 1: 1 foo
# 2: 2 bar
# 3: 3 baz
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.