我有以下数据:
df1 <- data.frame( id = c(1,1,2) , a = c('a','b','c'))
> df1
id a
1 1 a
2 1 b
3 2 c
如果组中至少一个元素满足给定条件,我想过滤(删除)在变量上定义的组的所有元素。
此处,如果变量 a 等于“a”,则抑制与 id 对应的行。
我尝试了以下操作,它仅删除带有 == 'a' 的行,因为我希望过滤 id == 1 的组
> df1 %>%
+ group_by( id ) %>%
+ filter( a != 'a')
# A tibble: 2 × 2
# Groups: id [2]
id a
<dbl> <chr>
1 1 b
2 2 c
欢迎任何帮助
也许使用all
library(dplyr)
df1 %>%
group_by(id) %>%
filter(all(a != 'a')) %>%
ungroup
Or with any
df1 %>%
group_by(id) %>%
filter(!any(a == 'a')) %>%
ungroup
或者可以使用%in%
as well
df1 %>%
group_by(id) %>%
filter(!'a' %in% a) %>%
ungroup
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)