如何根据类别在 R 中创建 ID 列?
如果我们在R数据框中有一个分类列,那么它可以用于创建一个ID列,其中每个类别都将根据分类列中的类别定义自己的ID。
为此,我们需要使用as.factor和as.numeric函数读取分类列,如下例所示。
示例1
以下代码段创建了一个示例数据框-
Group<-sample(c("Male","Female"),20,replace=TRUE) Score<-sample(20:50,20) df1<-data.frame(Group,Score) df1输出结果
创建以下数据框-
Group Score 1 Female 20 2 Female 27 3 Female 29 4 Male 50 5 Male 42 6 Female 41 7 Male 32 8 Male 25 9 Female 21 10 Female 49 11 Female 31 12 Female 28 13 Female 36 14 Female 26 15 Male 43 16 Female 45 17 Male 23 18 Female 46 19 Male 48 20 Male 33
要基于df1中的Group创建ID列,请将以下代码添加到上述代码段中-
Group<-sample(c("Male","Female"),20,replace=TRUE) Score<-sample(20:50,20) df1<-data.frame(Group,Score) df1$ID<-as.numeric(as.factor(df1$Group)) df1输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Group Score ID 1 Female 20 1 2 Female 27 1 3 Female 29 1 4 Male 50 2 5 Male 42 2 6 Female 41 1 7 Male 32 2 8 Male 25 2 9 Female 21 1 10 Female 49 1 11 Female 31 1 12 Female 28 1 13 Female 36 1 14 Female 26 1 15 Male 43 2 16 Female 45 1 17 Male 23 2 18 Female 46 1 19 Male 48 2 20 Male 33 2
示例2
以下代码段创建了一个示例数据框-
Class<-sample(c("First","Second","Third"),20,replace=TRUE) Rank<-sample(1:10,20,replace=TRUE) df2<-data.frame(Class,Rank) df2输出结果
创建以下数据框-
Class Rank 1 Third 5 2 Third 7 3 First 3 4 Third 8 5 Second 9 6 Third 9 7 First 3 8 Second 10 9 First 4 10 Third 2 11 Third 8 12 Third 1 13 Third 10 14 First 6 15 Third 5 16 Second 6 17 Third 7 18 Third 5 19 Third 2 20 Second 5
要基于df2中的Class创建ID列,请将以下代码添加到上面的代码段中-
Class<-sample(c("First","Second","Third"),20,replace=TRUE) Rank<-sample(1:10,20,replace=TRUE) df2<-data.frame(Class,Rank) df2$ID<-as.numeric(as.factor(df2$Class)) df2输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
Class Rank ID 1 Third 5 3 2 Third 7 3 3 First 3 1 4 Third 8 3 5 Second 9 2 6 Third 9 3 7 First 3 1 8 Second 10 2 9 First 4 1 10 Third 2 3 11 Third 8 3 12 Third 1 3 13 Third 10 3 14 First 6 1 15 Third 5 3 16 Second 6 2 17 Third 7 3 18 Third 5 3 19 Third 2 3 20 Second 5 2