合并具有部分匹配行的多个数据框

时间:2019-03-13 22:32:52

标签: r

我的数据框带有诸如NAMES之类的元素列表。数据框中有不同的名称,但大多数都匹配在一起。我想将所有这些都合并到一个列表中,在其中可以查看df中是否缺少某些名称。

df1的数据样本:

  X                    x
1 1 rh_Structure/Focus_S
2 2 rh_Structure/Focus_C
3 3 lh_Structure/Focus_S
4 4 lh_Structure/Focus_C
5 5   RH_Type-Function-S
6 6        RH_REFERENT-S

和df2

  X                    x
1 1 rh_Structure/Focus_S
2 2 rh_Structure/Focus_C
3 3 lh_Structure/Focus_S
4 4 lh_Structure/Focus_C
5 5            UCZESTNIK
6 6                COACH

,预期结果将是:

                  NAME. df1 df2
1                COACH  NA   6
2 lh_Structure/Focus_C   4   4
3 lh_Structure/Focus_S   3   3
4        RH_REFERENT-S   6  NA
5 rh_Structure/Focus_C   2   2
6 rh_Structure/Focus_S   1   1
7   RH_Type-Function-S   5  NA
8            UCZESTNIK  NA   5

我可以用merge.data.frame(df1,df2,by =“ x”,all = T)做到这一点, 但我无法在结构相似的情况下使用更多df。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

从长远来看,使用它可能会更容易。只需rbind彼此下面的所有数据集,并带有一个标志,说明它们来自哪个数据集。然后,将所有缺失值制成表格是相对简单的(而且,作为额外的好处,您可以查看任何源数据集中是否有重复项):

dfs <- c("df1","df2")
dfall <- do.call(rbind, Map(cbind, mget(dfs), src=dfs))
table(dfall$x, dfall$src)

#                        df1 df2
#   COACH                  0   1
#   lh_Structure/Focus_C   1   1
#   lh_Structure/Focus_S   1   1
#   RH_REFERENT-S          1   0
#   rh_Structure/Focus_C   1   1
#   rh_Structure/Focus_S   1   1
#   RH_Type-Function-S     1   0
#   UCZESTNIK              0   1