r - 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 值仍然存在。我怎样才能做到这一点?
解决方案
希望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
推荐阅读
- sql - 获取列值作为不同属性的数组列表
- java - 在服务器上的 MySql 中执行查询时与 only_full_group_by 相关的错误,在本地计算机上工作正常
- python - 如何使用 BeutifulSoup 解析这样的值?
- azure-machine-learning-service - 训练我的任何模型时出现错误“无法创建配方:服务调用失败!请求......”
- amazon-web-services - AWS CLI Lambda 单次调用导致多次调用
- sql - 分组后的最大值与总和
- javascript - 使用 step 对 Jquery 中的许多不同 div 进行动画处理
- c# - 为什么我不能将派生程度更高的泛型类型转换为派生程度较低的泛型类型?
- javascript - Ajax 检测到“跨域请求被阻止”错误
- java - SpEL:当使用 SpEL 编译时,表达式求值的性能没有明显差异