通过匹配ID创建新列

  • 本文关键字:创建 新列 ID r
  • 更新时间 :
  • 英文 :


我有以下示例数据:

data_1 <- data.frame("ID" = c('a','b','c','d','e'),
"value" = c(2,4,9,5,3))
data_2 <- data.frame("ID" = c('a','c','d','b','e','a','e','d','c'),
'var' =c(2,6,2,4,6,8,6,4,5))

我想计算data_2中的新列,使得对于两个数据集中的相同ID,valuevar相乘。

类似于data_1$ID==data_2$ID然后data_1$value*data_2$var。所以newVar就是(4,54,10,16,18,16,18,20,45)

连接两个数据框并将valuevar相乘。

transform(merge(data_1, data_2, by = 'ID'), result = value * var)

您也可以使用match:

transform(data_2, result = var * data_1$value[match(ID, data_1$ID)])
#  ID var result
#1  a   2      4
#2  c   6     54
#3  d   2     10
#4  b   4     16
#5  e   6     18
#6  a   8     16
#7  e   6     18
#8  d   4     20
#9  c   5     45

使用dplyr:

library(dplyr)
inner_join(data_1, data_2, by = 'ID') %>% mutate(result = value * var)

使用data.table

library(data.table)
setDT(data_1)[data_2, result := value * var, on = .(ID)]

最新更新