R - 加入data.table,根据行中另一列的值选择不同的列

时间:2013-08-11 14:35:32

标签: r data.table

我有两个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

基本上我想在DT1上合并DT2idx,但我只希望DT2中的列与A的值相对应DT1行。 DT1和DT2具有相同的行数,并且行的顺序相同

是否有data.table本地方式来执行此操作?

1 个答案:

答案 0 :(得分:6)

在使用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