1

我有两个数据表:

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

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

有没有一种 data.table 本地方式来做到这一点?

4

1 回答 1

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
于 2013-08-11T15:11:47.347 回答