【发布时间】:2017-07-05 15:16:46
【问题描述】:
假设我对数据框的某些列值进行了如下处理:
id animal weight height ...
1 dog 23.0
2 cat NA
3 duck 1.2
4 fairy 0.2
5 snake BAD
df <- data.frame(id = seq(1:5),
animal = c("dog", "cat", "duck", "fairy", "snake"),
weight = c("23", NA, "1.2", "0.2", "BAD"))
假设处理需要在单独的表中工作,并作为结果给出以下数据框,它是原始数据框的子集:
id animal weight
2 cat 2.2
5 snake 1.3
sub_df <- data.frame(id = c(2, 5),
animal = c("cat", "snake"),
weight = c("2.2", "1.3"))
现在我想再次将所有内容放在一起,所以我使用这样的操作:
> df %>%
anti_join(sub_df, by = c("id", "animal")) %>%
bind_rows(sub_df)
id animal weight
4 fairy 0.2
1 dog 23.0
3 duck 1.2
2 cat 2.2
5 snake 1.3
是否有某种方法可以直接通过连接操作来执行此操作?
如果子集只是关键列和要进行治疗的变量 (id,动物体重) 而不是总变量原始数据框(id, animal, weight, height),如何将子集与原始集合组装起来?
【问题讨论】: