首页 > 解决方案 > 删除行的大部分值为零

问题描述

文件-

    i   j   k   l   m   n
a   0   0   0   1   0   1
b   8   6   34  1   0   0
c   0   9   12  0   8   0
d   7   9   3   7   0   5
e   0   0   0   1   0   0
f   2   3   9   6   8   9
g   0   1   0   3   1   5
h   0   9   0   8   4   0

我想删除那些在超过 3 个单元格中叶片值为 0 的行。

预期产出-

    i   j   k   l   m   n
b   8   6   34  1   0   0
d   7   9   3   7   0   5
f   2   3   9   6   8   9
g   0   1   0   3   1   5

标签: r

解决方案


我们可以用rowSums

df[rowSums(df == 0) < 3, ]

#  i j  k l m n
#b 8 6 34 1 0 0
#d 7 9  3 7 0 5
#f 2 3  9 6 8 9
#g 0 1  0 3 1 5

我们还可以使用apply和计算 0 的行数,然后是子集

df[apply(df == 0, 1, sum) < 3, ] 

推荐阅读