繁体   English   中英

R-在data.table上联接,根据行中另一列的值选择其他列

[英]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上合并DT1DT2 ,但是我只希望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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM