在R中合并2个变量的数据

a.p*_*ell 6 merge r

我试图合并两个数据集.在过去,我已经使用merge()具有by等于我要合并的变量.但是,现在我想用两个变量来做.我的第一个数据集看起来像这样:

Year   Winning_Tm    Losing_Tm
2011   Texas         Washington
2012   Alabama       South Carolina
2013   Tennessee     Texas
Run Code Online (Sandbox Code Playgroud)

然后我有另一个数据集,每个团队的每个团队的排名(这是非常简化的).像这样:

Year    Team             Rank
2011    Texas            32
2011    Washington       34
2012    South Carolina   45
2012    Alabama          12
2013    Texas            6
2013    Tennessee        51
Run Code Online (Sandbox Code Playgroud)

我想合并它们,所以我有一个如下所示的数据集:

Year   Winning_Tm    Winning_TM_rank    Losing_Tm        Losing_Tm_rank
2011   Texas         32                 Washington       34
2012   Alabama       12                 South Carolina   45
2013   Tennessee     51                 Texas            6
Run Code Online (Sandbox Code Playgroud)

我希望有一种简单的方法可以做到这一点但它可能更复杂.谢谢!

Bri*_*per 2

两个单独的合并。您需要将by变量列表包装在 中c(),并且由于变量具有不同的名称,因此您需要by.xby.y。之后您可以重命名排名变量。

我将分别调用您的数据winloseteamrank。那么你需要:

first_merge <- merge(winlose, teamrank, by.x = c('Year', 'Winning_Tm'), by.y = c('Year', 'Team'))
second_merge <- merge(first_merge, teamrank, by.x = c('Year', 'Losing_Tm'), by.y = c('Year', 'Team'))
Run Code Online (Sandbox Code Playgroud)

重命名变量:

names(second_merge)[names(second_merge) == 'Rank.x'] <- 'Winning_Tm_rank'
names(second_merge)[names(second_merge) == 'Rank.y'] <- 'Losing_Tm_rank'
Run Code Online (Sandbox Code Playgroud)

  • 啊,很好,我从来没有使用过这个功能。编辑我的答案,将“rank”更改为“teamrank”。 (2认同)