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

更新于: 2021 年 3 月 5 日

377 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告