【发布时间】:2015-06-24 12:35:11
【问题描述】:
取一个简单的数据集
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)
输出应该包含下面绿色的数据并删除红色的数据
【问题讨论】:
-
e <- d %>% group_by(c) %>% filter( !b == 1) -
!b == 1等于b != 1可能更具可读性? -
不完全是,所以我想删除每个唯一的“c”行,其中每个“c”身份没有“b==1”
-
这也不起作用
e <- d %>% group_by(c) %>% filter( b == 1 & b == 2 ) -
不知道为什么以前没人这么说,但是你要找的函数是
n_distinct,比如d %>% group_by(c) %>% filter(n_distinct(b)>1)