Я работаю с большим набором данных о госпитализации.Многие пациенты имеют две или более госпитализаций, и их история болезни может быть неполной при одной или нескольких госпитализациях.Я хотел бы свести всю информацию о каждой из их госпитализаций в единый список медицинских проблем для каждого пациента.
Вот пример фрейма данных:
id <- c("123","456","789","101","123","587","456","789")
HTN <- c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE)
DM2 <- c(FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE)
TIA <- c(TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE)
df <- data.frame(id,HTN,DM2,TIA)
df
, который получается:
> df
id HTN DM2 TIA
1 123 TRUE FALSE TRUE
2 456 FALSE FALSE TRUE
3 789 FALSE TRUE TRUE
4 101 FALSE TRUE TRUE
5 123 FALSE FALSE FALSE
6 587 TRUE TRUE TRUE
7 456 FALSE FALSE TRUE
8 789 FALSE TRUE TRUE
Я бы хотел, чтобы мой вывод выглядел так:
id <- c("101","123","456","587","789")
HTN <- c(FALSE,TRUE,FALSE,TRUE,FALSE)
DM2 <- c(TRUE,FALSE,FALSE,TRUE,TRUE)
TIA <- c(TRUE,TRUE,TRUE,TRUE,TRUE)
df2 <- data.frame(id,HTN,DM2,TIA)
df2
id HTN DM2 TIA
1 101 FALSE TRUE TRUE
2 123 TRUE FALSE TRUE
3 456 FALSE FALSE TRUE
4 587 TRUE TRUE TRUE
5 789 FALSE TRUE TRUE
До сих пор у меня было довольно хорошее предчувствие, что организация и группировка моих данных - это подходящее место для начала, и я думаю, что я мог бы заставить это работать, создав новую переменную для каждой медицинской проблемы.У меня около 30 медицинских проблем, которые мне нужно будет таким образом свернуть, и этот многократно повторяющийся код выглядит как рецепт оккультной ошибки.
df3 <- df %>%
arrange(id) %>%
group_by(id)
Оглядываясь вокруг, я не смогчтобы найти особенно элегантный способ сделать это.Есть ли какая-то приятная функция dplyr, которую я пропускаю?