如何根据类别在 R 中创建 ID 列?
r programmingserver side programmingprogramming更新于 2025/4/9 14:07:17
如果我们在 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