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