我有两个这样的数据框架。
Table1
Sample Name Position A B C
1 J 23 x x x
1 K 24 y y y
1 L 25 z z z
Table2
Sample Name Position A B C
2 M 33 x x x
2 N 34 y y y
2 O 35 z z z
我希望决赛桌看起来像这样。
FinalTable1
Sample Name Position A B C Sample Name Position A B C
1 J 23 x x x 2 J 23 Na Na Na
1 K 24 y y y 2 K 24 Na Na Na
1 L 25 z z z 2 L 25 Na Na Na
Sample Name Position A B C Sample Name Position A B C
1 M 33 Na Na Na 2 M 33 0 0 0
1 N 34 Na Na Na 2 N 34 0 0 0
1 O 35 Na Na Na 2 O 35 0 0 0
基本上,我想合并两个数据帧,因此两个数据帧在名称和位置方面的联合在最终表中,并且最终数据框填充了Na的不存在位置,在样本中#39; t具有那些基因/位置,但匹配样本(因此如果table1和table2都有P和数据,那么它们将被并排写入)。最终,我想合并8个这样的数据表。我一直试图在R上进行合并,但我似乎无法让它发挥作用。任何指导都会很棒。
谢谢!
答案 0 :(得分:2)
你可以尝试
cbind(
merge(tbl1, tbl2, by=c('Name', 'Position'), all.x=TRUE),
merge(tbl1, tbl2, by=c('Name', 'Position'), all.y=TRUE))
如果要合并多个数据集,您可以将它们放在list
中,然后使用Reduce
和merge
。例如
lst <- list(tbl1, tbl2)
res1 <- Reduce(function(...) merge(..., by=c('Name', 'Position'),
all.x=TRUE), lst)
res2 <- Reduce(function(...) merge(..., by=c('Name', 'Position'),
all.y=TRUE), lst)
cbind(res1,res2)