R:根据两个表中的值添加列

时间:2015-06-24 15:27:47

标签: r

我有Table1和Table2,我想获得Table3。

对于表3中的每一行

  • id必须同时包含在Table1和Table2中
  • var的值=表2中var的值
  • 添加了一列var_difference,其中var_difference = Table2.var - Table1.var

表1:

id var
01 2
02 3

表2:

id var
02 4
03 5

表3:

id var var_difference
02 4   1

3 个答案:

答案 0 :(得分:4)

数据

t1 <- data.frame(id = paste0("0", 1:2), var = 2:3)
t2 <- data.frame(id = paste0("0", 2:3), var = 4:5)

<强>代码

transform(merge(t1, t2, by = "id"), 
          var = var.x, var_difference = var.y - var.x,
          var.x = NULL, var.y = NULL)
#   id var var_difference
# 1 02   3              1

<强>解释

使用merge创建data.frame,其中包含具有相同id的行。 transform对返回的data.frame起作用,并格式化您想要的输出。首先,创建列var,然后创建列var_difference。最后,删除了var.xvar.y。后面的列由merge创建,代表varmerget1)两个参数的t2列。

答案 1 :(得分:0)

tab3 <- merge(tab1, tab2, by = "id")
tab3$var_difference <- tab3[ ,3] - tab3[ ,2]
tab3 <- tab3[ ,-2:-3]

答案 2 :(得分:0)

尝试以下方法:

Table3 <- merge(Table1[,'id'], Table2, by.x = 'id', by.y = 'id')
Table3$var_difference <- Table2$var[Table2$id %in% Table3$id] - Table1$var[Table1$id %in% Table3$id]