删除零数字的行

时间:2017-03-20 07:20:50

标签: r

我有一个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 :(得分: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