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