Присоединение к фрейму данных на основе нескольких условий с помощью dplyr

#r #join #dplyr

#r #Присоединиться #dplyr

Вопрос:

У меня есть два фрейма данных

DF1

 Name   Industry     Division     Job
Billy  Cameras      Finance      Analyst
Jane   Cameras      Finance      Scientist
Marge  Lightening   Operations   Analyst
  

DF2

 Industry     Division        Job_        Rate
Cameras      Finance         Analyst     45
Cameras      Finance         Scientist   24
Cameras      Operations      Analyst     23
Cameras      Operations      Scientist   41
Lightening   Operations      Analyst     10
Lightening   Finance         Analyst     101
  

Итак, я хочу соединить DF2 с DF1 слева, и это просто, потому что это зависит только от того, являются ли отрасль, подразделение и работа общими. Но как мне это сделать, А также иметь разные имена переменных.

 DF1 %>% 
  left_join(DF2, by = c('Industry', 'Division', 'Job`))
  

Итак, мне нужно, чтобы задание переходило к Job_. Я не могу переименовать.

Конечный результат:

 Name   Industry     Division     Job         Rate
Billy  Cameras      Finance      Analyst     45
Jane   Cameras      Finance      Scientist   24
Marge  Lightening   Operations   Analyst     10
  

Ответ №1:

Мы можем использовать = для указания имен каждого набора данных, если есть какие-либо различия

 library(dplyr) 
DF1 %>% 
      left_join(DF2, by = c('Industry', 'Division', 'Job' = 'Job_'))
#   Name   Industry   Division       Job Rate
#1 Billy    Cameras    Finance   Analyst   45
#2  Jane    Cameras    Finance Scientist   24
#3 Marge Lightening Operations   Analyst   10
  

С base R merge помощью , есть by.x и by.y для указания имен, которые отличаются в наборах данных