+-
绑定/合并两个不同行数的数据帧

我正在寻找一种将几个数据帧的列绑定在一起的方法,即使行数不匹配也是如此。我尝试使用“ cbind”和“合并”以较宽的格式获取我的数据,而不是dplyr偏爱高数据。

举个简单的例子,我有2个数据帧:1个有4行,一个有5行。我想绑定“团队”,并且在没有匹配项的任何时候,用空格或NA填充它。

示例数据帧:

df1

Team Season Pts
STL 2019 99
CHI 2019 84
DET 2019 74
NYR 2019 78

df2

Team Season Pts
STL 2018 94
CHI 2018 76
MIN 2018 101
DET 2018 73
BOS 2018 112

所需的输出将类似于:

Team Season Points Team.1 Season.1 Points.1
STL 2019 99 STL 2018 94
CHI 2019 84 CHI 2018 76
DET 2019 74 DET 2018 73
NYR 2019 78 NA NA NA
MIN 2018 101 NA NA NA
BOS NA NA BOS 2019 112 
3
投票

与dplyr一起使用set操作非常容易。具体来说,您正在寻找full_join。

此函数有3个参数,#1和#2是您要加入的数据框。 #3是“键”参数,它告诉函数通过哪一列来连接数据帧。在这种情况下,键='Team'。

让我知道它是否有效!

0
投票

我们可以使用bind_rows,然后将pivot_wider转换为“宽”格式

library(dplyr)
library(tidyr)
bind_rows(df1, df2, .id = 'grp') %>% 
    complete(grp, Team) %>%
    group_by(grp) %>%
    mutate(rn = row_number()) %>%
    pivot_wider(names_from = grp, values_from = c(Team, Season, Pts)) %>%
    select(-rn)