如何合并列表中的数据框?

时间:2017-04-27 16:43:28

标签: r

我有一个数据框列表。我想在列名上垂直合并它们。

我的列表中有三个数据框,例如:

Precinct VoterTurnout Johnson Jameson
4030     45           20      25

这一个......

Precinct VoterTurnout Jimson
1234     33           20

第三......

Precinct VoterTurnout Jhohnshohn
4321     555          222

这些数据框位于名为listDFs的列表中。如何合并它们看起来像这样?

Precinct VoterTurnout Johnson Jameson Jimson Jhohnshohn
4030     45           20      25      NA     NA
1234     33           NA      NA      20     NA
4321     555          NA      NA      NA     222

1 个答案:

答案 0 :(得分:0)

使用tidyverse个包,您可以使用Reducefull_join()来完成它:

首先,让我们创建“子表”作为元素:

library(tidyverse)

a <- tribble(
  ~Precinct, ~VoterTurnout, ~Johnson,
  4030,     45,           20
)

b <- tribble(
  ~Precinct, ~VoterTurnout, ~Jimson,
  1234,     33,           20
)

c <- tribble(
  ~Precinct, ~VoterTurnout,  ~Jhohnshohn,
  4321,     555,          222
)

现在我们有了表 a b c ,我们可以用Reduce递归地加入列表:

ll <- list(a,b,c)

ll %>% 
  reduce(full_join)

请注意,当您使用full_jo时,NA会出现在应有的位置。

让我们检查结果:

    # A tibble: 3 × 5
  Precinct VoterTurnout Johnson Jimson Jhohnshohn
     <dbl>        <dbl>   <dbl>  <dbl>      <dbl>
1     4030           45      20     NA         NA
2     1234           33      NA     20         NA
3     4321          555      NA     NA        222