【发布时间】:2023-03-07 12:07:01
【问题描述】:
我正在处理住院记录的大型数据框。许多患者有两次或多次住院,他们过去的病史可能在一次或多次住院时不完整。我想将他们每次住院的所有信息汇总到每个患者的医疗问题列表中。
这是一个示例数据框:
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 功能?
【问题讨论】:
标签: r dataframe dplyr data-analysis data-cleaning