2017-03-20 210 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