如何在 R 数据框中创建分组列?
假设我们有一个名为 df 的数据框,它包含两列,例如 X 和 Y,然后我们可以通过将 df 转换为 data.table 对象并使用列表函数在 X 和 Y 中创建值列表来创建基于 X 和 Y 的分组列。
查看下面的示例以了解如何完成。
示例 1
以下代码片段创建了一个示例数据框 -
x1<-rpois(20,2) x2<-rpois(20,2) df1<-data.frame(x1,x2) df1
创建了以下数据框
x1 x2 1 1 5 2 1 1 3 0 1 4 1 1 5 2 1 6 2 3 7 4 2 8 0 4 9 2 1 10 2 2 11 0 1 12 3 1 13 3 3 14 4 3 15 2 0 16 1 3 17 2 1 18 3 1 19 5 1 20 3 2
要在上面创建的数据框上加载 data.table 对象并为 df1 中的值创建分组列,请将以下代码添加到上面的代码片段中 -
x1<-rpois(20,2) x2<-rpois(20,2) df1<-data.frame(x1,x2) library(data.table) setDT(df1)[,Group:=.GRP,by=list(x1,x2)] df1
输出
如果您将以上所有代码片段作为单个程序执行,它将生成以下输出 -
x1 x2 Group 1: 1 5 1 2: 1 1 2 3: 0 1 3 4: 1 1 2 5: 2 1 4 6: 2 3 5 7: 4 2 6 8: 0 4 7 9: 2 1 4 10: 2 2 8 11: 0 1 3 12: 3 1 9 13: 3 3 10 14: 4 3 11 15: 2 0 12 16: 1 3 13 17: 2 1 4 18: 3 1 9 19: 5 1 14 20: 3 2 15
示例 2
以下代码片段创建了一个示例数据框 -
y1<-sample(LETTERS[1:4],20,replace=TRUE) y2<-sample(LETTERS[1:4],20,replace=TRUE) df2<-data.frame(y1,y2) df2
创建了以下数据框
y1 y2 1 B C 2 B D 3 D C 4 D B 5 A B 6 D A 7 A C 8 A C 9 D B 10 C C 11 A A 12 C D 13 B C 14 C C 15 A A 16 D B 17 B A 18 C B 19 C B 20 C B
要在上面创建的数据框上为 df2 中的值创建分组列,请将以下代码添加到上面的代码片段中 -
y1<-sample(LETTERS[1:4],20,replace=TRUE) y2<-sample(LETTERS[1:4],20,replace=TRUE) df2<-data.frame(y1,y2) setDT(df2)[,Group:=.GRP,by=list(y1,y2)] df2
输出
如果您将以上所有代码片段作为单个程序执行,它将生成以下输出 -
y1 y2 Group 1: B C 1 2: B D 2 3: D C 3 4: D B 4 5: A B 5 6: D A 6 7: A C 7 8: A C 7 9: D B 4 10: C C 8 11: A A 9 12: C D 10 13: B C 1 14: C C 8 15: A A 9 16: D B 4 17: B A 11 18: C B 12 19: C B 12 20: C B 12
广告