1
如果我有像這樣如何刪除一整行,如果它是全0 R中
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 R中
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
謝謝!
是這樣的嗎?
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
也許這有助於:
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))
沒有工作......我不想刪除所有零,只有完全爲0的行 – user4999605
感謝您的糾正,但它仍然無法正常工作。我喜歡第二種選擇,但由於我的一些列是數字,有些是字符矢量,它也不能工作:( – user4999605
如果是這樣,請提供一個示例數據,最好使用'dput(head(df))'。 – zero323