如何按组消除行?

How do I eliminate rows by group?

假设我有一个像这样的 tbl,按 var1 分组:

var1 var2
A    2
A    3
A    0
B    0
B    2
B    1
C    0
C    0
C    0

我想知道是否有办法去掉 var2 中全为零的组,例如在这个数据集中应该删除组 c,如下所示:

var1 var2
A    2
A    3
A    0
B    0
B    2
B    1

有没有使用 dplyr 的简单方法?我想要一个仅使用 dplyrtidyr 中的函数的答案,由 %>%.

连接

试试这样的东西:

library('dplyr')
tbl %>% 
   group_by(var1) %>%
   filter(!all(var2 == 0))

怎么样

 tbl %>%
   group_by(var1) %>%
   mutate(var3 = ifelse(mean(var2) == 0, 1, 0))
   filter(var3 != 1)
tbl %>%
   group_by(var1) %>%
   filter(sum(var2)!= 0)