如何在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