(我编辑了整个答案) 您可以将df与merge()
合并(来自Andrie的评论)。还请检查?merge
以了解所有选项,您可以输入by
参数,0 = row.names
。
下面的代码显示了这可能是你的数据帧(不同的行数和列)
x = data.frame(a1 = c(1,1,1,1,1), a2 = c(0,1,1,0,0), a3 = c(1,0,2,0,0), row.names = c('y1','y2','y3','y4','y5'))
x1 = data.frame(a4 = c(1,1,1,1), a5 = c(0,1,0,0), row.names = c('y1','y3','y4','y5'))
只要行的名称可以作为标识符的例子,然后我们把它们作为新列按列合并:
x$id <- row.names(x)
x1$id <- row.names(x1)
# merge by column names
merge(x, x1, by = intersect(names(x), names(x1)))
# result
# id a1 a2 a3 a4 a5
# 1 y1 1 0 1 1 0
# 2 y3 1 1 2 1 1
# 3 y4 1 0 0 1 0
# 4 y5 1 0 0 1 0
我希望这能解决问题。
编辑:好了,现在我觉得自己很傻。如果所有列在两个数据框中都有不同的名称,则不需要将行名称作为另一列。只需使用:
merge(x,x1, by=0)
您是否已经尝试“合并()”这些数据帧?另外,如果数据帧很大,可以使用package'data.table'来执行非常快速的连接操作。 – Andrie 2012-07-26 09:45:24
您可以尝试一个shell脚本,例如:将一个放在另一个之上,“排序”,然后是“uniq -d”。 – DiscreteCircle 2012-07-26 09:51:55
你已经有共享行的rownames,你问如何提取这些行? – JackeJR 2012-07-26 09:52:07