R语言按患者入院日期生成分组排名:每唯一ID下从1开始连续排序
实现方案
首先需要将date_of_entry字段转换为标准日期格式,避免字符串排序出现逻辑错误,再按unique_id分组,为排序后的日期生成序号即可,以下是两种可直接运行的实现:
方法1:tidyverse(dplyr)方案
library(dplyr) df_result <- df %>% mutate(date_of_entry = as.Date(date_of_entry, format = "%m-%d-%Y")) %>% group_by(unique_id) %>% mutate(day_at_facility = row_number(date_of_entry)) %>% ungroup()
如果原数据已经默认按同ID的入院日期升序排列,可以简化为mutate(day_at_facility = 1:n()),运行效率更高。
方法2:Base R方案(无需加载第三方包)
df$date_of_entry <- as.Date(df$date_of_entry, format = "%m-%d-%Y") df$day_at_facility <- ave(as.numeric(df$date_of_entry), df$unique_id, FUN = rank)
两种方案输出结果均匹配你给出的目标数据格式。
内容的提问来源于stack exchange,提问作者taimishu
相关产品推荐
相关产品推荐

