如何在 R 数据框中创建组列?

r programmingserver side programmingprogramming更新于 2025/4/9 11:37:17

假设我们有一个名为 df 的数据框,其中包含两列,即 X 和 Y,那么我们可以通过将 df 转换为 data.table 对象并使用 list 函数在 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

相关文章