首页 文章

删除零数字的行[重复]

提问于
浏览
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 回答

  • 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
    

相关问题