首页 > 解决方案 > R结合数据框/删除行与条件

问题描述

我有两个具有相同列的数据框,我想合并它们。如果 df1 和 df2 的“ID”列中的任何值相同,我只想保留 df1 的相应行(df1 或 df2 中的此列中没有重复值)。举个例子:

df1=data.frame(ID=c("id10", "id11", "id3", "id5", "id8", "id40", "id47", "id9"),
               Var1 = c(rep("A", 3), rep("B", 3), rep(NA, 2)),
               Var2 = c(rep("yes",4),rep("no", 4)))

df2=data.frame(ID=c("id3", "id4","id8", "id20", "id32"),
               Var1 = c(rep("A", 2), rep("B", 2), rep(NA, 1)),
               Var2 = c(rep("yes",4),rep("no", 1)))


>df1
  ID Var1 Var2
1 id10    A  yes
2 id11    A  yes
3  id3    A  yes
4  id5    B  yes
5  id8    B   no
6 id40    B   no
7 id47 <NA>   no
8  id9 <NA>   no

>df2
ID Var1 Var2
1  id3    A  yes
2  id4    A  yes
3  id8    B  yes
4 id20    B  yes
5 id32 <NA>   no

我正在寻找的输出:


> df_res
     ID Var1 Var2
1  id10    A  yes
2  id11    A  yes
3   id3    A  yes
4   id5    B  yes
5   id8    B   no
6  id40    B   no
7  id47 <NA>   no
8   id9 <NA>   no
9   id4    A  yes       #edited
10 id20    B  yes
11 id32 <NA>   no

所以我有点想用 df1 更新 df2。例如,“id8”出现在两个 dfs 中,但 df_res 只有一个来自 df1 并丢弃了来自 df2 的条目,而来自 df2 和 df1 的所有唯一 id 值仍然存在。我怎样才能做到这一点?

标签: rdataframe

解决方案


希望unique+rbind可以帮助

> unique(rbind(df1, df2))
     ID Var1 Var2
1  id10    A  yes
2  id11    A  yes
3   id3    A  yes
4   id5    B  yes
5   id8    B   no
6  id40    B   no
7  id47 <NA>   no
8   id9 <NA>   no
10  id4    A  yes
11  id8    B  yes
12 id20    B  yes
13 id32 <NA>   no

推荐阅读