2016-06-10 61 views
2

設說我有這樣的R:引用範圍列在dplyr

txt A1 A2 B1 B2 
1 ala 6  9 12 23 
2 ata 1  3 3  11 
.... 

的數據幀df我想用dplyr用於過濾基於一系列的變量的總和的行。 我想:

filter(df, sum(A2:B1)>10) 

....但它不工作。

任何人都可以在dplyr中提出解決方案嗎?是的,我知道這可以通過簡單的子集來完成。

+0

'filter(df,A2 + B1> 10)'? – Sotos

+0

我知道在這個特定的情況下,你可以簡單地添加這兩個,但想象我有在範圍 – kwicher

+0

耶的數十列耶,這就是我認爲... – Sotos

回答

2

我覺得最dplyr -esque的辦法是:

df %>% 
    filter(rowSums(select_(., 'A2:B1')) > 10) 

其中給出:

# txt A1 A2 B1 B2 
#1 ala 6 9 12 23 
+0

還有一個問題。是否可能沒有小費? – kwicher

+1

@kwicher試試'filter(df,rowSums(select_(df,'A2:B1'))> 10)' –

+1

Surly,謝謝。完美的作品。 – kwicher

1

您需要先拿到指標,然後用rowSums

library(dplyr) 
which(names(df) == 'A2') #find first column 
#[1] 3 
which(names(df) == 'B1') #find last column 
#[1] 4 
filter(df, rowSums(df[,3:4])>10) 
# txt A1 A2 B1 B2 
#1 ala 6 9 12 23