按列名(而不是按列值)合并(合并)行

merge (combine) rows by column names (not by column values)

我有几个 R 数据框。有些列具有相同的列名,但也有一些列在每个数据框中具有不同的名称。我想合并这些数据框的行,以便将具有相同名称的列添加到新行中,并且可以将具有不同列名的列保留在新数据框中。一个可复制的例子看起来像这样:

apple <- data.frame(Obs = c(1:4),
                    Color = c("red", "red", "red", "green"),
                    Weight = c(1.1, 1.2, 1.3, 1.4))

orange <- data.frame(Obs = c(2:11),
                     speed = c(2, 3, 4, 5, 6, 7, 8, 9, 2, 3))

apple
  Obs Color Weight
1   1   red    1.1
2   2   red    1.2
3   3   red    1.3
4   4 green    1.4

orange
   Obs speed
1    2     2
2    3     3
3    4     4
4    5     5
5    6     6
6    7     7
7    8     8
8    9     9
9   10     2
10  11     3

所需的输出如下所示:

   Obs Color Weight speed
1   1   red    1.1
2   2   red    1.2
3   3   red    1.3
4   4 green    1.4
5   2                 2
6   3                 3
7   4                 4
8   5                 5
9   6                 6
10  7                 7
11  8                 8  
12  9                 9
13  10                2
14  11                3

非常感谢。

plyr 有一个有用的功能:

library(plyr)
rbind.fill(apple, orange)

提供以下内容table:

   Obs Color Weight speed
1    1   red    1.1    NA
2    2   red    1.2    NA
3    3   red    1.3    NA
4    4 green    1.4    NA
5    2  <NA>     NA     2
6    3  <NA>     NA     3
7    4  <NA>     NA     4
8    5  <NA>     NA     5
9    6  <NA>     NA     6
10   7  <NA>     NA     7
11   8  <NA>     NA     8
12   9  <NA>     NA     9
13  10  <NA>     NA     2
14  11  <NA>     NA     3
library(tidyverse)

bind_rows(apple, orange)

给出:

   Obs Color Weight speed
1    1   red    1.1    NA
2    2   red    1.2    NA
3    3   red    1.3    NA
4    4 green    1.4    NA
5    2  <NA>     NA     2
6    3  <NA>     NA     3
7    4  <NA>     NA     4
8    5  <NA>     NA     5
9    6  <NA>     NA     6
10   7  <NA>     NA     7
11   8  <NA>     NA     8
12   9  <NA>     NA     9
13  10  <NA>     NA     2
14  11  <NA>     NA     3