如何删除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