我有一个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
}
这是一种有点沮丧的方式。有没有想过是否有更优化的方法来制作它?
答案 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