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

更新于: 2021年11月5日

832 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告