在R中对齐多Excel工作表数据框的方法咨询
用R实现Excel工作表基于患者编号对齐的方法
可以用R的readxl、dplyr(或base R)快速完成这个需求,核心是用左连接保留所有患者记录,无匹配数据的位置自动留空(NA),具体步骤如下:
1. 安装并加载所需包
# 首次使用时安装包 install.packages(c("readxl", "dplyr", "openxlsx")) # 加载包 library(readxl) library(dplyr) library(openxlsx)
2. 读取Excel中的两个工作表
# 替换成你的Excel文件实际路径 file_path <- "你的患者数据.xlsx" # 读取包含所有患者年龄的工作表(假设是第1个工作表) df_age <- read_excel(file_path, sheet = 1) # 读取仅包含部分患者性别的工作表(假设是第2个工作表) df_gender <- read_excel(file_path, sheet = 2)
3. 基于患者编号对齐合并数据
方法一:用dplyr的left_join(语法更直观)
# 以PATIENT NUMBER为匹配键,保留df_age的所有患者记录 merged_data <- df_age %>% left_join(df_gender, by = "PATIENT NUMBER")
方法二:用base R的merge函数
# all.x = TRUE 表示保留左侧数据框(df_age)的所有行 merged_data <- merge(df_age, df_gender, by = "PATIENT NUMBER", all.x = TRUE)
4. 导出对齐后的结果到Excel
write.xlsx(merged_data, "对齐后的患者数据.xlsx")
说明:合并后,没有性别数据的患者,性别列会显示NA,导出到Excel后会自动变成空单元格,完全符合需求。
内容的提问来源于stack exchange,提问作者user19745561
相关产品推荐
相关产品推荐

