如何在R数据帧的每一行中找到唯一值的数量?

为了找到R数据帧的每一行中唯一值的数量,我们可以使用带有长度和唯一函数的apply函数。例如,如果我们有一个称为df的数据帧,其中包含多列,则可以使用命令apply(df,1,function(x)length(unique(x)))找到df每行中唯一值的数量。

例1

考虑以下数据帧-

> x1<-rpois(20,2)
> x2<-rpois(20,2)
> x3<-rpois(20,2)
> x4<-rpois(20,2)
> df1<-data.frame(x1,x2,x3,x4)
> df1
输出结果
   x1 x2 x3 x4
1   3  1  1  2
2   3  2  0  2
3   3  2  0  1
4   3  0  3  1
5   3  1  1  2
6   4  4  2  4
7   1  0  2  1
8   0  4  1  2
9   1  4  4  4
10  2  1  2  4
11  1  4  1  2
12  2  5  0  3
13  1  0  3  0
14  2  1  2  2
15  1  0  6  3
16  1  0  5  2
17  3  1  0  3
18  1  3  7  4
19  2  0  1  3
20  1  4  3  0

在df1的每一行中找到唯一值的数量-

> apply(df1,1,function(x) length(unique(x)))
[1] 3 3 4 3 3 2 3 4 2 3 3 4 3 2 4 4 3 4 4 4

例2

> y1<-rpois(20,1)
> y2<-rpois(20,1)
> y3<-rpois(20,1)
> y4<-rpois(20,1)
> y5<-rpois(20,1)
> df2<-data.frame(y1,y2,y3,y4,y5)
> df2
输出结果
   y1 y2 y3 y4 y5
1   2  0  0  0  1
2   0  1  0  1  3
3   1  1  1  1  1
4   4  1  1  1  0
5   3  0  0  0  0
6   0  0  0  1  1
7   0  0  3  0  0
8   1  2  3  1  1
9   1  1  3  0  1
10  2  1  1  1  1
11  0  2  0  2  1
12  2  0  1  0  1
13  0  2  0  0  1
14  0  0  1  3  0
15  1  1  2  1  0
16  1  2  2  2  1
17  0  0  0  1  1
18  0  2  0  0  1
19  1  1  0  1  2
20  2  2  0  2  2

在df2的每一行中找到唯一值的数量-

> apply(df2,1,function(x) length(unique(x)))
输出结果
[1] 3 3 1 3 2 2 2 3 3 2 3 3 3 3 3 2 2 3 3 2