如何在R语言的data.table对象中查找每列唯一值的个数?


为了查找data.table对象中每列唯一值的个数,我们可以结合使用`uniqueN`函数和`lapply`函数。例如,如果我们有一个名为DT的data.table对象,包含五列,每列都包含一些重复值,那么可以通过使用`DT[,lapply(.SD,uniqueN)]`来查找每列唯一值的个数。

示例

考虑以下data.table对象:

x1<-rpois(20,2)
x2<-rpois(20,5)
DT1<-data.table(x1,x2)
DT1

输出

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

查找DT1每列唯一值的个数:

示例

DT1[,lapply(.SD,uniqueN)]

输出

   x1 x2
1: 5  9

示例

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
DT2<-data.table(y1,y2)
DT2

输出

     y1    y2
1:   1.0  -0.5
2:  -1.1   0.5
3:   0.0   0.4
4:  -1.0   0.1
5:  -1.0  -1.4
6:   0.4  -0.7
7:   0.6  -0.2
8:   0.0  -0.3
9:   0.0   0.6
10: -0.2  -0.2
11: -0.2   1.8
12: 0.8    0.7
13: 0.5    0.6
14: -1.6  -0.4
15: 0.1  -0.2
16: 0.6  -1.3
17: 0.0   0.8
18: 1.4  -0.6
19: 0.5  -0.2
20: 0.9  -0.7

查找DT2每列唯一值的个数:

示例

DT2[,lapply(.SD,uniqueN)]

输出

   y1 y2
1: 13 15

示例

z1<-round(runif(20,2,5),1)
z2<-round(runif(20,2,5),1)
z3<-round(runif(20,2,5),1)
z4<-round(runif(20,2,5),1)
DT3<-data.table(z1,z2,z3,z4)
DT3

输出

    z1    z2   z3    z4
1:  3.3  3.2  4.6   3.4
2:  4.1  4.4  2.9   2.7
3:  2.3  4.4  4.6   3.6
4:  5.0  3.6  2.6   2.6
5:  4.2  4.1  2.8   4.2
6:  3.7  4.4  2.9   3.1
7:  3.1  3.1  2.0   4.6
8:  4.7  2.7  3.5   5.0
9:  2.1  3.0  4.0   3.7
10: 2.3  2.5  3.2   2.7
11: 4.1  2.1  2.7   2.3
12: 2.4  2.7  4.2   3.2
13: 4.4  3.7  3.5   4.3
14: 3.7  3.1  3.3   3.3
15: 4.3  4.1  4.4   3.4
16: 3.9  2.7  2.9   3.6
17: 2.1  3.6  2.2   4.1
18: 3.0  3.6  2.3   3.4
19: 4.1  3.3  4.3   4.5
20: 2.4  3.4  3.7   3.6

查找DT3每列唯一值的个数:

示例

DT3[,lapply(.SD,uniqueN)]

输出

   z1 z2 z3 z4
1: 14 12 16 15

更新于:2021年3月16日

637 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告