2015-07-09 25 views
-1

說我有一個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中的函數的回答,由%>%連接。

+0

因爲沒有人喜歡基礎R任何更多的,我就離開了答案評論:'DAT [用( dat,ave(var2!= 0L,var1,FUN = any)),]' – thelatemail

回答

1

試着這麼做:

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

非常好!謝謝!但爲什麼不直接過濾?這樣你就不必用另一個'select'來刪除新列。 – trVoldemort

+0

只是爲了詳細。如果你願意,你也可以直接過濾。 –

0

什麼

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

這不會炒鍋。如果var2 = c(-1,1)? –

+0

好點。將不得不用'abs()'來包裝它 –

0
tbl %>% 
    group_by(var1) %>% 
    filter(sum(var2)!= 0) 
+0

這是行不通的。再次,sum(c(-1,1))== 0 –

+0

OP問題是:擺脫var2中全零的組。 –