通常,我们会丢失数据,有时如果零不是变量的实际范围,则丢失的数据会填充零。在这种情况下,我们可以删除所有值为零的行。为此,我们可以使用rowSums函数,如果总和大于零,则保留该行,否则忽略该行。
请看以下数据帧-
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
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
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