使用dplyr基于一行中的值删除多行

时间:2018-05-16 17:24:49

标签: r dplyr

使用dplyr

基于一行中的值删除多行

我们假设我有这样的数据集

Pet   Day       Bite
Cow   Monday    No  
Cow   Tuesday   No  
Cow   Wednesday No  
Dog   Monday    No  
Dog   Tuesday   No  
Dog   Wednesday No  
Tiger Monday    No  
Tiger Tuesday   Yes  
Tiger Wednesday No 

我想创建一个新的数据集,它可以消除所有咬伤的宠物。我的数据集应该是

Pet   Day       Bite
Cow   Monday    No  
Cow   Tuesday   No  
Cow   Wednesday No  
Dog   Monday    No  
Dog   Tuesday   No  
Dog   Wednesday No

如何使用dplyr执行此操作?

1 个答案:

答案 0 :(得分:0)

查看filter链接here

只能使用filterany执行此操作。您group_by宠物,如果它们中的任何一个被咬了,它将过滤掉整个宠物类别。

library(dplyr)
df %>% group_by(Pet) %>% filter(!any(Bite == "Yes"))
# A tibble: 6 x 3
# Groups: Pet [2]
#  Pet   Day       Bite 
#  <fct> <fct>     <fct>
#1 Cow   Monday    No   
#2 Cow   Tuesday   No   
#3 Cow   Wednesday No   
#4 Dog   Monday    No   
#5 Dog   Tuesday   No   
#6 Dog   Wednesday No