首页 文章

绑定data.table和vector

提问于
浏览
0

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

我想绑定这两个data.tables,以便对于dt1中的每个值,a a对应(=站在同一行)V的值,其名称等于dt1 $ a中的值 . 最后,新构造的data.table应该有ncol(dt1)1列和nrow(dt1)行 . 例如:在第6行中,a 3出现在dt1 $ a中,名为3的V值应出现在新创建的data.table的第6行中 .

希望这是有道理的 . 我希望这个操作是基本的,我很难用简单的词语来解释它!

2 回答

  • 0

    这个怎么样?

    dt[, V := V[as.character(a)]]
        a     V
     1: 1 0.500
     2: 2 0.125
     3: 3 1.500
     4: 2 0.125
     5: 1 0.500
     6: 3 1.500
     7: 2 0.125
     8: 3 1.500
     9: 2 0.125
    10: 1 0.500
    11: 2 0.125
    12: 3 1.500
    
  • 3

    不是最好的方式,但它的工作原理:

    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
    

相关问题