我有一个包含数千行的数据框。每一行都是住院记录;它包含患者的ID和许多健康信息(诊断,入院日期,解雇日期等)。
每位患者都可以拥有超过住院记录,但我只需要每位患者的第一次住院治疗,例如根据入院日期,每个患者ID的第一个记录。如何在R中获得此结果?
提前谢谢。
答案 0 :(得分:1)
我认为我有一个解决方案,但可能有更顺畅的方法来做到这一点。
使用dplyr
尝试此操作。请注意,我假设当你说'第一'记录时,你的意思是最老的记录。如果您想要最新记录,请改用max()
。
install.packages('dplyr')
library(dplyr)
your_data <- group_by(your_data, patientID)
## This gives you a data frame with all dates and IDs for first visits
first_records <- summarise(your_data, min(admit_date))
## Create ID to match
first_records$matchID <- paste(first_records$patientID, first_records$admit_date)
your_data$matchID <- paste(your_data$patientID, your_data$admit_date)
## Get complete records
first_records <- your_data[your_data$matchID %in% first_records$matchID, ]
Lemme知道这是怎么回事。
编辑:看起来像@alistaire发布的更简单的解决方案:
your_data <- group_by(your_data, patientID)
first_records <- filter(your_data, adm_date == min(admission_date))