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

启动你的职业生涯

通过完成课程获得认证

开始学习
广告