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

时间:2015-06-24 12:35:12

标签: r dplyr

采用简单的数据集

$zip->addFile("C:/e_files/Images/$image_name", $image_name);

现在我想过滤我的数据,以便我们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

输出应包含下面的绿色数据并删除红色数据

enter image description here

2 个答案:

答案 0 :(得分:15)

尝试

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

答案 1 :(得分:0)

你可以尝试

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