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)