如何在 R 数据框的一列中找到不为零的值的数量?


如果一个 R 数据框包含数值列,那么也可能存在一些或所有列中存在零,我们可能希望找到一列中非零值的个数。这将有助于我们根据非零值的个数比较列,并且可以通过使用 colSums 来实现。

示例

考虑以下数据框 -

 在线演示

x1<-sample(0:10,20,replace=TRUE)
x2<-sample(0:50,20,replace=TRUE)
x3<-sample(0:5,20,replace=TRUE)
x4<-sample(0:15,20,replace=TRUE)
x5<-sample(0:20,20,replace=TRUE)
df1<-data.frame(x1,x2,x3,x4,x5)
df1

输出

  x1 x2 x3 x4 x5
1  9 47 4  1  6
2  7 6  1  7  7
3  3 20 5 15 19
4 10 13 2 13 13
5  10 49 1 8 12
6  10 49 1 2  1
7  9  36 5 2 15
8  0  27 4 15 8
9  6  50 2 7 15
10 7  11 0 10 4
11 9  22 1  7 14
12 5  47 5  3 20
13 3  36 2  0  6
14 10 44 4  6 18
15 1  40 2  11 4
16 1  46 0  15 5
17 3  36 5  0  9
18 2  1  5  6 19
19 9  38 3  4  1
20 1  37 4 11 18

查找每列中不为零的值的数量 -

示例

colSums(df1!=0)

输出

x1 x2 x3 x4 x5
19 20 18 18 20

让我们看看另一个例子 -

示例

 在线演示

y1<-rpois(20,1)
y2<-rpois(20,2)
y3<-sample(0:1,20,replace=TRUE)
y4<-sample(0:2,20,replace=TRUE)
df2<-data.frame(y1,y2,y3,y4)
df2

输出

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

示例

colSums(df2!=0)

输出

y1 y2 y3 y4
15 19 8 13

更新于: 2020-09-08

205 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告