У меня есть набор данных, содержащий сотни фирм, в которых сотрудники сгруппированы по фирмам id
.Для некоторых фирм существует несколько записей для одной и той же employee
, хотя и с разными датами start
и stop
.
Я хочу объединить или удалить дубликаты записей о сотрудниках, сохраняя при этом оба ранних издве даты начала и позже двух дат окончания.Мой набор данных выглядит следующим образом:
df <- structure(list(id = c(1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
employee = c("culver", "maguire", "florenzano","cretu", "tran", "ryman",
"menezes", "dancause", "schumaker", "tyler", "cretu", "tran", "menezes"),
started = structure(c(15014, 15014, 15014, 15279, 15279, 15279, 15279, 15279, 15279, 15279, 15706, 15492, 15706), class = "Date"),
ended = structure(c(18157, 15126, 15126, 15949, 15949, 15461, 15705, 15461, 15461, 15584, 18157,
15706, 15876), class = "Date")), row.names = c(NA, -13L), class = c("tbl_df","tbl", "data.frame"), .Names = c("id", "employee", "started","ended"))
Вы видите, что в Фирме 2 есть повторяющиеся записи для Cretu, Tran и Menezes.Окончательный набор данных должен выглядеть следующим образом:
df2 <- structure(list(id = c(1, 1, 1, 2, 2, 2, 2, 2, 2, 2),
employee = c("culver", "maguire", "florenzano","cretu", "tran", "ryman",
"menezes", "dancause", "schumaker", "tyler"),
started = structure(c(15014, 15014, 15014, 15279, 15279, 15279, 15279, 15279, 15279, 15279), class = "Date"),
ended = structure(c(18157, 15126, 15126, 18157, 15949, 15461, 15876, 15461, 15461, 15584), class = "Date")), row.names = c(NA, -13L), class = c("tbl_df","tbl", "data.frame"), .Names = c("id", "employee", "started","ended"))
Я пробовал несколько решений, включающих mutate
, which.min
и which.max
, но безуспешно.Здесь должно быть доступно аккуратное решение, но я не могу понять это.Любая помощь будет высоко ценится.