如何编写R函数按Hospital_ID生成独立患者合并DataFrame
解决方案
步骤说明
- 合并数据表:先将
Demography和Patient_Prescription通过Pat_ID关联,筛选出需要的列(匹配预期输出结构)。 - 按医院拆分:将合并后的数据集按
Hospital_ID拆分为一个列表,每个列表元素对应一家医院的合并DataFrame。
完整代码
library(dplyr) library(stringr) # 用于格式化处方名称(可选) # 合并两个数据表,保留目标列并格式化处方名称 merged_data <- Demography %>% inner_join(Patient_Prescription, by = "Pat_ID") %>% select(Pat_ID, Hospital_ID, Prescription, Gender) %>% mutate(Prescription = str_to_title(Prescription)) # 可选:将处方名首字母大写,匹配示例输出 # 按Hospital_ID拆分为DataFrame列表 hospital_dfs <- split(merged_data, merged_data$Hospital_ID)
如何使用结果
- 通过列表索引访问特定医院的数据:
# 获取A434医院的合并数据 hospital_dfs[["A434"]] # 获取A232医院的合并数据 hospital_dfs[["A232"]]
示例输出
A434医院数据:
| Pat_ID | Hospital_ID | Prescription | Gender |
|---|---|---|---|
| P1 | A434 | Hydrolin | M |
| P4 | A434 | Danitol | M |
A232医院数据:
| Pat_ID | Hospital_ID | Prescription | Gender |
|---|---|---|---|
| P2 | A232 | Ospamox | F |
| P6 | A232 | Dentol Hydro | M |
注意事项
- 使用列表存储所有医院数据比生成270个独立DataFrame更整洁,便于后续批量处理(如导出到文件、批量分析)。
- 若确实需要将每个医院数据转为独立环境变量,可使用
list2env(hospital_dfs, .GlobalEnv),但不推荐用于大量分组的场景。
内容的提问来源于stack exchange,提问作者Usman YousafZai
相关产品推荐
相关产品推荐

