在R中如何按数据框指定列的每类取值分别导出对应CSV文件
R实现按疾病名称拆分编码表并批量导出CSV
你可以选择以下任意一种方法实现需求,运行后会在你的R工作目录下生成对应每个疾病命名的CSV文件:
方法1:基础R实现,无需加载额外包
# 按疾病列拆分整个数据集,得到每个疾病单独的子数据集列表 split_codelist <- split(codelist, codelist$Disease) # 遍历列表批量导出CSV for (disease_name in names(split_codelist)) { # 替换疾病名称中的空格为下划线,避免文件名不合法,可自行添加其他需要替换的特殊字符 safe_file_name <- paste0(gsub(" ", "_", disease_name), ".csv") # row.names = FALSE 表示不导出行号,quote = FALSE表示不对内容加引号,可按需调整 write.csv( x = split_codelist[[disease_name]], file = safe_file_name, row.names = FALSE, quote = FALSE ) }
方法2:tidyverse生态实现,代码更简洁
# 加载所需包,未安装的话先运行 install.packages("tidyverse") library(tidyverse) codelist %>% # 按疾病列分组拆分数据集 group_split(Disease) %>% # 为每个子数据集绑定对应的疾病名称 set_names(map_chr(., ~ unique(pull(., Disease)))) %>% # 批量导出为CSV文件 iwalk(~ write_csv(.x, paste0(gsub(" ", "_", .y), ".csv")))
注意:如果疾病名称包含/、\、:等系统不允许出现在文件名中的特殊字符,可以在gsub函数中添加对应替换规则,统一替换为下划线即可避免导出报错。
内容的提问来源于stack exchange,提问作者Nao
相关产品推荐
相关产品推荐

