Как создать фрейм данных, беря только общие переменные из двух фреймов данных - PullRequest
0 голосов
/ 04 мая 2020
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))

employ.data <- data.frame(employee, salary, startdate)


employee <- c('John Doe','Peter Gynn','Jolie Hope')
age <- c(43, 45, 36)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
employ.data2 <- data.frame(employee, age, startdate)

Мне нужен фрейм данных сотрудника, начальная дата, т.е. только одна и та же переменная из двух фреймов данных

1 Ответ

2 голосов
/ 04 мая 2020

Это обычно называется «объединением» двух «таблиц» (или data.frames в R) и является обычной операцией в базах данных. Для простоты в R вы можете использовать функцию merge:

merge(employ.data, employ.data2, by='employee') # to compare only by employee
merge(employ.data, employ.data2) # let merge use all columns in common

Но подождите, это еще не все! merge позволяет указать

  • , какой столбец в двух data.frames использовать для сравнения (см. Аргументы by.x и by.y)
  • , если хотите все строки из первого data.frame и / или все строки из второго data.frame (аргументы all, all.x и all.y) - это обычно называют "внутреннее соединение" (all=FALSE), или полное, левое или правое соединение.

Если вы хотите более продвинутый тид, вы можете заглянуть в pacakge dplyr, который использует глаголы inner_join и left_join как функции (и даже больше!), которые улучшают читабельность вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...