【问题标题】:How to merge two data frames using condition如何使用条件合并两个数据框
【发布时间】:2019-03-08 09:44:03
【问题描述】:

我有两个 df,我需要合并它们。

df1 看起来像这样:

COUNTRY   YEAR   TRADE   
Spain     2016   276   
Germany   2016   323      
France    2016   392
Spain     2017   456   
Germany   2017   564      
France    2017   359

df2 看起来像这样:

COUNTRY   GDP2016   GDP2017
Spain      1111       999   
Germany    2222       888      
France     3333       777

通过简单的df3 <- merge(df1,df2, by = "COUNTRY") 我得到:

 COUNTRY   YEAR   TRADE    GDP2016 GDP2017 
    Spain     2016   276      1111    999
    Germany   2016   323      2222    888 
    France    2016   392      3333    777
    Spain     2017   456      1111    999
    Germany   2017   564      2222    888   
    France    2017   359      3333    777

但我想得到的是:

COUNTRY   YEAR   TRADE    GDP 
Spain     2016   276      1111
Germany   2016   323      2222   
France    2016   392      3333
Spain     2017   456      999
Germany   2017   564      888      
France    2017   359      777

可能我必须使用某种条件,但我不知道如何。我将不胜感激。

【问题讨论】:

    标签: r merge dplyr


    【解决方案1】:

    通过使用ifelse() 函数并从dplyr 变异:

    library(dplyr)
    
    df3 <- merge(df1,df2, by = "COUNTRY")
    
    df3 <- df3 %>% mutate(GDP = ifelse(YEAR == 2016, GDP2016, GDP2017))
    df3 <- subset(df3, select = -c(GDP2016, GDP2017))
    

    输出:

    > df3
      COUNTRY YEAR TRADE  GDP
    1  France 2016   392 3333
    2  France 2017   359  777
    3 Germany 2016   323 2222
    4 Germany 2017   564  888
    5   Spain 2016   276 1111
    6   Spain 2017   456  999
    

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2021-09-18
      相关资源
      最近更新 更多