如何在 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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告