dplyr :过滤一系列行(在一列中)

2024-05-08

虚拟数据框:

id_family<- c(1, 1, 2, 2, 3, 3)
people<- c("male", "female", "male", "female", "male", "children") 

dataset <- data.frame(id_family, people)  
dataset

我的结果:

id_family   people
1           male            
1           female          
2           male            
2           female          
3           male            
3           children

我想要的:根据“男性和女性”序列过滤行

预期结果:过滤族 1 和族 2

id_family   people
1           male            
1           female          
2           male            
2           female          

我尝试使用 lag/lead dplyr 的函数但没有成功:

 dataset2 <- dataset %>%
    filter(people=="male", lead(people)=="female")

我们可以用all

dataset %>%
      group_by(id_family) %>%
      filter(all(c("male", "female") %in% people))
# A tibble: 4 x 2
# Groups: id_family [2]
#  id_family people
#      <dbl> <fctr>
#1         1   male
#2         1 female
#3         2   male
#4         2 female

或者根据OP的评论,如果顺序很重要那么

dataset %>%
       group_by(id_family) %>% 
       filter(first(people)=="male", last(people) == "female", n()==2)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dplyr :过滤一系列行(在一列中) 的相关文章

随机推荐