0

私は2つのdata.tablesを持っています:

require(data.table)
set.seed(11)
dt = data.table(a=c(1,2,3,2,1,3,2,3,2,1,2,3))
V = c(1/2,1/8,3/2)
names(V) = c('1','2','3')

これらの 2 つの data.tables をバインドして、dt1$a の各値が dt1$a の値と同じ名前の V の値に対応する (= 同じ行にある) ようにします。最後に、新しく構築された data.table には ncol(dt1)+1 列と nrow(dt1) 行が含まれているはずです。例: 行 6 のように、dt1$a に 3 が表示され、3 という名前の V の値が、新しく作成された data.table の行 6 に表示されます。

これが理にかなっていることを願っています。この操作は基本的なものだと思いますが、簡単な言葉で説明するのは難しいです!

4

2 に答える 2

0

最善の方法ではありませんが、うまくいきます:

V <- data.table(V)
V <- V[,a:=unique(dt[,list(a)])]
merge(dt,V,by="a")
    a     V
 1: 1 0.500
 2: 1 0.500
 3: 1 0.500
 4: 2 0.125
 5: 2 0.125
 6: 2 0.125
 7: 2 0.125
 8: 2 0.125
 9: 3 1.500
10: 3 1.500
11: 3 1.500
12: 3 1.500
于 2013-08-21T10:11:24.357 に答える