如何在R中具有相同列的两个数据框中创建行的组合?

要在 R 中具有相同列的两个数据框中创建行的组合,我们可以按照以下步骤操作 -

  • 首先,创建两个数据框。

  • 然后,将数据框中的行expand.grid与 do.call 和 cbind组合起来。

创建数据框

让我们创建一个数据框,如下所示 -

Class<-sample(c("I","II","III"),6,replace=TRUE)
Score<-sample(1:20,6)
df1<-data.frame(Class,Score)
df1

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

 Class Score
1 III 1
2 III 13
3 III 10
4 I   2
5 II  7
6 II  17

让我们创建另一个数据框 df2,如下所示 -

例子

Class<-sample(c("I","II","III"),6,replace=TRUE)
Score<-sample(1:20,6)
df2<-data.frame(Class,Score)
df2
  Class Score
1 III    2
2 I      1
3 III    7
4 III    15
5 I      12
6 III    13

合并数据框的行

使用 cbind 函数expand.grid和do.call函数来组合 df1 和 df2 中的行 -

Class<-sample(c("I","II","III"),6,replace=TRUE)
Score<-sample(1:20,6)
df1<-data.frame(Class,Score)
Class<-sample(c("I","II","III"),6,replace=TRUE)
Score<-sample(1:20,6)
df2<-data.frame(Class,Score)
do.call(cbind.data.frame,Map(expand.grid,df1=df1,df2=df2))

输出

   Class.df1 Class.df2 Score.df1 Score.df2
1  III         III        1         2
2  III         III        13        2
3  III         III        10        2
4  I           III        2         2
5  II          III        7         2
6  II          III        17        2
7  III          I         1         1
8  III          I         13        1
9  III          I         10        1
10 I            I         2         1
11 II           I         7         1
12 II           I         17        1
13 III          III       1         7
14 III          III       13        7
15 III          III       10        7
16 I            III        2        7
17 II           III        7        7
18 II           III       17        7
19 III          III       1         15
20 III          III       13        15
21 III          III       10        15
22 I            III       2         15
23 II           III       7         15
24 II           III       17        15
25 III          I         1         12
26 III          I        13         12
27 III          I        10         12
28 I            I        2          12
29 II           I        7          12
30 II           I        17         12
31 III          III      1          13
32 III          III      13         13
33 III          III      10         13
34 I            III      2          13
35 II           III      7          13
36 II           III      17         13

猜你喜欢