2017-03-20 167 views
0

我有一個像這樣用0和1的值數據框中:零號刪除行

stock1,stock2,stock3,stock4 
1,0,0,0 
1,0,1,0 
0,0,1,0 
1,0,1,0 

我想刪除其中所有的行有0值的行,前面的例子中,他們是stoc2和stock4欄。爲了讓我計算的總和,並有必要行

stock1,stock2,stock3,stock4 
1,0,0,0 
1,0,1,0 
0,0,1,0 
1,0,1,0 
3,0,3,0 

使用這樣的事情:

for (i in 1:ncol(df)){ 
     col_number <- paste("df$stock",i) 
     col_number <- NULL # I could find a way to have the df column and not the variable 
} 

這是一個有點沮喪的方式。任何想法,如果有一個更優化的方式來做到這一點?

回答

1

問題和示例的描述似乎不一致。如果我們需要刪除的行,那裏只有0的,那麼我們就可以用rowSums

df1[rowSums(df1 != 0)>0,] 

如果我們需要刪除具有的所有值0列,那麼,做

Filter(sum, df1) 

或使其明確並在邊緣案例上工作

Filter(function(x) any(x!=0), df1) 
# stock1 stock3 
#1  1  0 
#2  1  1 
#3  0  1 
#4  1  1