R中整理EHR导出数据:将分散info文本合并为tidymodel输入格式
合并EHR数据的info列条目(适配tidymodel输入格式)
解决思路
通过生成分组标识,将同一条目的多行info内容合并到对应条目行,最终实现每行对应一个完整条目。核心是利用cumsum()识别条目起始行,再按分组聚合合并内容。
代码实现
首先加载tidyverse工具包(适配tidymodel生态):
library(tidyverse)
假设你的数据框名为ehr_data,执行以下代码完成整理:
ehr_cleaned <- ehr_data %>% # 生成分组ID:每遇到op_saal/vorname/seite均非空的行,分组号递增 mutate(group_id = cumsum(!is.na(op_saal) & !is.na(vorname) & !is.na(seite))) %>% # 按分组聚合数据 group_by(group_id) %>% summarise( op_saal = first(na.omit(op_saal)), # 提取分组内唯一非空的op_saal值 vorname = first(na.omit(vorname)), seite = first(na.omit(seite)), info = str_c(info, collapse = ", ") # 合并同分组的所有info内容 ) %>% ungroup() %>% select(-group_id) # 移除临时分组ID列
关键逻辑说明
cumsum()函数会为每个完整条目(起始行)分配唯一分组号,后续属于该条目的空行自动归入同一分组。first(na.omit(col))确保只保留每个分组中关键列的有效数据(因为每个条目仅起始行有这些值)。str_c(..., collapse = ", ")按照示例要求,用逗号加空格合并多行info内容,保证格式一致。
内容的提问来源于stack exchange,提问作者Peter Hahn
相关产品推荐
相关产品推荐

