如何在 R 数据框列中为连续重复的值创建组名?
值的组合可以通过多种方式完成,其中一种方式是,如果我们有重复值或唯一值,则可以基于此设置组。如果所有值都是唯一的,则分组没有意义,但如果我们有不同的值,则可以进行分组。为此,我们可以使用 rleid 函数,如下面的示例所示。
示例 1
考虑以下数据框 -
> x<-sample(0:2,20,replace=TRUE) > df1<-data.frame(x) > df1
输出
x 1 2 2 1 3 2 4 2 5 1 6 0 7 1 8 1 9 1 10 1 11 0 12 0 13 1 14 2 15 1 16 0 17 1 18 0 19 1 20 2
为 x 中的值创建组 -
> df1$Grp<-paste0("Grp",rleid(df1$x)) > df1
输出
x Grp 1 2 Grp1 2 1 Grp2 3 2 Grp3 4 2 Grp3 5 1 Grp4 6 0 Grp5 7 1 Grp6 8 1 Grp6 9 1 Grp6 10 1 Grp6 11 0 Grp7 12 0 Grp7 13 1 Grp8 14 2 Grp9 15 1 Grp10 16 0 Grp11 17 1 Grp12 18 0 Grp13 19 1 Grp14 20 2 Grp15
示例 2
> y<-sample(0:1,20,replace=TRUE) > df2<-data.frame(y) > df2
输出
y 1 0 2 1 3 0 4 1 5 1 6 1 7 0 8 0 9 0 10 1 11 0 12 0 13 0 14 0 15 0 16 1 17 1 18 1 19 1 20 0
为 y 中的值创建组 -
> df2$Category<-paste0("Category#",rleid(df2$y)) > df2
输出
y Category 1 0 Category#1 2 1 Category#2 3 0 Category#3 4 1 Category#4 5 1 Category#4 6 1 Category#4 7 0 Category#5 8 0 Category#5 9 0 Category#5 10 1 Category#6 11 0 Category#7 12 0 Category#7 13 0 Category#7 14 0 Category#7 15 0 Category#7 16 1 Category#8 17 1 Category#8 18 1 Category#8 19 1 Category#8 20 0 Category#9
广告