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