2016-11-30 2 views
0

特定の条件を満たすかまたは満たさない列を削除してデータフレームをサブセット化したいと考えています。特定の値の有無に基づいてデータフレームから列を削除する

df <- data.frame(w = c('a', 'b', 'c'), 
       x = c(1, 0, 0), 
       y = c(0, 1, 0), 
       z = c(0, 0, 1)) 

います:

w x y z 
    a 1 0 0 
    b 0 1 0 
    c 0 0 1 

私は行をサブセット化した後、0を含む列を削除したいたとえば、次のデータを与えられました。たとえば:

df %>% filter(., w == 'a') 

が生成されます私は、このように次のステップがあるべき、このdplyrを使用しないために探しています

x 
1 

:私は、その後に削減したい

w x y z 
a 1 0 0 

filterコマンドの後にパイプされます。私はsummariseをapplyと併用しようとしましたが、うまくいきませんでした。

+0

不格好が、ベースに使用することができます( 'ワットlapply(DFの$、機能(X){==のXワットた(DFの$)、[DF DF [df $ w == x]、!!= 0)]}) 'これは' df $ w'の各値のリストを与えます – Badger

答えて

5

を使用できselect_if()

df %>% filter(w == 'a') %>% select_if(function(col) is.numeric(col) && all(col != 0)) 

# x 
#1 1 
関連する問題