繁体   English   中英

使用 dplyr 分组和过滤数据管理

[英]group by and filter data management using dplyr

取一个简单的数据集

a <- c(1,2,3,4,5,6,7,8)
b <- c(1,2,2,1,2,2,2,2)
c <- c(1,1,1,2,2,2,3,3)
d <- data.frame(a,b,c)

现在我想过滤我的数据,以便我们group_by(c)然后删除没有b=1出现的所有数据。

因此,结果 ( e ) 应该看起来像d但没有底部的两行

我试过使用

e <- d %>%
  group_by(c) %>%
  filter(n(b)>1)

output 应该包含下面绿色的数据并删除红色的数据

在此处输入图像描述

尝试

d %>% 
  group_by(c) %>% 
  filter(any(b == 1))

这使:

#Source: local data frame [6 x 3]
#Groups: c
#
#  a b c
#1 1 1 1
#2 2 2 1
#3 3 2 1
#4 4 1 2
#5 5 2 2
#6 6 2 2

你可以试试

df <- d %>% mutate(test = ifelse((b != 1) == T, 0, 1)) %>% group_by(c) %>% 
            mutate(test = sum(test)) %>% filter(test != 0) %>% select(-test)

产量

#  a b c
#1 1 1 1
#2 2 2 1
#3 3 2 1
#4 4 1 2
#5 5 2 2
#6 6 2 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM