如何在R資料框中刪除全為零的行?


通常,我們會遇到缺失資料,有時如果零不是變數的實際範圍,則缺失資料會用零填充。在這種情況下,我們可以刪除所有值為零的行。為此,我們可以使用rowSums函式,如果總和大於零,則保留該行,否則忽略它。

示例1

 線上演示

考慮以下資料框:

set.seed(251)
x1<−sample(0:1,20,replace=TRUE)
x2<−sample(0:1,20,replace=TRUE)
df1<−data.frame(x1,x2)
df1

輸出

x1 x2
1 0 0
2 0 1
3 0 1
4 1 1
5 1 0
6 0 1
7 1 0
8 1 1
9 1 1
10 0 0
11 0 1
12 1 0
13 1 0
14 1 1
15 0 1
16 1 1
17 1 1
18 1 1
19 1 1
20 0 0

刪除所有值為零的行:

df1[rowSums(df1[])>0,]

輸出

x1 x2
2 0 1
3 0 1
4 1 1
5 1 0
6 0 1
7 1 0
8 1 1
9 1 1
11 0 1
12 1 0
13 1 0
14 1 1
15 0 1
16 1 1
17 1 1
18 1 1
19 1 1

示例2

 線上演示

y1<−sample(c(0,5),20,replace=TRUE)
y2<−sample(c(0,2),20,replace=TRUE)
df2<−data.frame(y1,y2)
df2

輸出

y1 y2
1 5 0
2 0 2
3 0 2
4 0 0
5 5 2
6 5 0
7 5 0
8 0 2
9 0 2
10 5 0
11 0 0
12 0 0
13 5 0
14 0 0
15 5 2
16 5 0
17 0 0
18 0 2
19 5 2
20 0 0

刪除所有值為零的行:

df2[rowSums(df2[])>0,]

輸出

y1 y2
1 5 0
2 0 2
3 0 2
5 5 2
6 5 0
7 5 0
8 0 2
9 0 2
10 5 0
13 5 0
15 5 2
16 5 0
18 0 2
19 5 2

示例3

 線上演示

z1<−rep(0,20)
z2<−sample(c(0,1),20,replace=TRUE)
df3<−data.frame(z1,z2)
df3

輸出

z1 z2
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 1
7 0 1
8 0 1
9 0 1
10 0 1
11 0 1
12 0 0
13 0 0
14 0 1
15 0 1
16 0 0
17 0 1
18 0 1
19 0 1
20 0 1

刪除所有值為零的行:

df3[rowSums(df3[])>0,]

輸出

z1 z2
6 0 1
7 0 1
8 0 1
9 0 1
10 0 1
11 0 1
14 0 1
15 0 1
17 0 1
18 0 1
19 0 1
20 0 1

更新於:2020年11月7日

9K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告