Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何按组消除行?_R_Dplyr - Fatal编程技术网

R 如何按组消除行?

R 如何按组消除行?,r,dplyr,R,Dplyr,假设我有这样一个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有没有简单的方法?我想要一个答案,只使用dplyr和tidyr中的函数,通过%>%连接,尝试以下操作

假设我有这样一个
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有没有简单的方法?我想要一个答案,只使用
dplyr
tidyr
中的函数,通过
%>%

连接,尝试以下操作:

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)

这个不行。如果var2=c(-1,1)呢?很好!谢谢但是为什么不直接过滤呢?这样你就不必用另一个
select
来删除新列。只是为了避免冗长。如果愿意,您也可以直接筛选。OP问题是:去掉var2中全零的组。既然没有人再喜欢基数R了,我就留下一个答案作为注释:
dat[with(dat,ave(var2!=0L,var1,FUN=any)),]
tbl %>%
   group_by(var1) %>%
   filter(sum(var2)!= 0)