Как объединить два фрейма данных, используя условие - PullRequest
0 голосов
/ 08 марта 2019

У меня есть два 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

Возможно, мне нужно использовать какое-то условие, но я не знаю как.Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 08 марта 2019

С помощью функции 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...