如果我有这样的数据框
4 6
6 0
4 5
0 0
6 5
0 4
4 4
但是要大得多,我可以写什么命令会删除任何完全为0的行,例如我的例子中的第4行。
最后看起来像这样
4 6
6 0
4 5
6 5
0 4
4 4
谢谢!
答案 0 :(得分:4)
这样的东西?
df[apply(df[, sapply(df, is.numeric)], 1, function(x) !all(x==0)), ]
或
df[rowSums(abs(df[, sapply(df, is.numeric)])) != 0, ]
示例:
> df <- data.frame(x=c(1, 2, 0), y=c(0, 1, 0), z=letters[1:3])
> df
x y z
1 1 0 a
2 2 1 b
3 0 0 c
> df[rowSums(abs(df[, sapply(df, is.numeric)])) != 0, ]
x y z
1 1 0 a
2 2 1 b
答案 1 :(得分:1)
也许这会有所帮助:
df <- df[-which(rowSums(abs(df)) == 0),]
#> df
# X1 X2
#1 4 0
#2 6 6
#3 6 5
#5 4 4
#6 5 4
#7 0 4
数据强>
df <- data.frame(matrix(c(4, 6, 6, 0, 4, 5, 0, 0, 6, 5, 0, 4, 4, 4), ncol=2))