如何在R資料框的字元列中建立包含值序列號的列?


R資料框中的分組列包含重複值,我們可能希望根據這些值建立一個包含序列號的列,例如,第一組的第一個值獲得1,當在同一列中第二次出現相同的值時獲得2,依此類推。這可以使用ave函式完成,如下例所示。

示例

考慮以下資料框:

 線上演示

S.No<-1:20
Group<-sample(LETTERS[1:4],20,replace=TRUE)
df1<-data.frame(S.No,Group)
df1

輸出

S.No Group
1  1 B
2  2 A
3  3 C
4  4 C
5  5 B
6  6 C
7  7 C
8  8 C
9  9 D
10 10 D
11 11 C
12 12 C
13 13 A
14 14 B
15 15 A
16 16 D
17 17 C
18 18 B
19 19 A
20 20 C

在df1中為分組值的序列號建立列:

示例

df1$GroupWise_SerialNo<-with(df1,ave(as.character(Group),Group,FUN=seq_along))
df1

輸出

S.No Group GroupWise_SerialNo
1  1    B    1
2  2    A    1
3  3    C    1  
4  4    C    2
5  5    B    2
6  6    C    3
7  7    C    4
8  8    C    5
9  9    D    1
10 10    D    2
11 11    C    6
12 12    C    7
13 13    A    2
14 14    B    3
15 15    A    3
16 16    D    3
17 17    C    8
18 18    B    4
19 19    A    4
20 20    C    9

示例

 線上演示

ID<-1:20
Sample<-sample(c("India","China","UK"),20,replace=TRUE)
df2<-data.frame(ID,Sample)
df2

輸出

   ID Sample
1  1 India
2  2 China
3  3 China
4  4 UK
5  5 China
6  6 UK
7  7 India
8  8 India
9  9 UK
10 10 India
11 11 UK
12 12 India
13 13 UK
14 14 UK
15 15 UK
16 16 India
17 17 India
18 18 UK
19 19 UK
20 20 China

在df2中為分組值的序列號建立列:

示例

df2$SampleWise_Numbering<-
with(df2,ave(as.character(Sample),Sample,FUN=seq_along))
df2

輸出

   ID Sample SampleWise_Numbering
1  1 India    1
2  2 China    1
3  3 China    2
4  4 UK       1
5  5 China    3
6  6 UK       2
7  7 India    2
8  8 India    3
9  9 UK       3
10 10 India    4
11 11 UK       4
12 12 India    5
13 13 UK       5
14 14 UK       6
15 15 UK       7
16 16 India    6
17 17 India    7
18 18 UK       8
19 19 UK       9
20 20 China    4

更新於:2020年12月5日

瀏覽量1K+

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.