【问题标题】:How can I create a file for each value of a column in R?如何为 R 中列的每个值创建一个文件?
【发布时间】:2021-11-27 18:15:08
【问题描述】:

我有一个包含数百种疾病的代码列表,每种疾病都有多个代码。如何为每种疾病创建和导出单独的 .csv 文件,并使用疾病名称进行保存?

Disease <- as.character(c("HIV","HIV", "HIV", "HIV", "anaemia", "anaemia", "anaemia", "Chronic Kidney Disease", "Chronic Kidney Disease"))
Code <- c(123, 432, 567, 876, 433, 096, 543, 912, 456)
codelist <- data.frame(Disease, Code)
codelist
                 Disease Code
1                    HIV  123
2                    HIV  432
3                    HIV  567
4                    HIV  876
5                anaemia  433
6                anaemia   96
7                anaemia  543
8 Chronic Kidney Disease  912
9 Chronic Kidney Disease  456

例如:

> HIV
  Disease Code
1     HIV  123
2     HIV  432
3     HIV  567
4     HIV  876

非常感谢!

【问题讨论】:

    标签: r dplyr subset


    【解决方案1】:

    这是一个基本的 R 方法:

    codelist.lst <- split(codelist, codelist$Disease)
    fnames <- paste0(names(codelist.lst), ".csv")
    lapply(seq(codelist.lst), function(x) write.csv(codelist.lst[[x]], file=fnames[x]))
    

    【讨论】:

    • 它工作到某一点,然后停止:文件中的错误(文件,ifelse(附加,“a”,“w”)):无法打开连接当我打开警告消息时:警告消息:1:在 write.csv(codelists[[i]],paste0(names(codelists)[i],...:尝试设置 'col.names' 被忽略 2:在 write.csv(codelists[[ i]], paste0(names(codelists)[i], ... : 尝试设置 'sep' 被忽略 3: 在 write.csv(codelists[[i]], paste0(names(codelists)[i], . .. : 尝试设置 'dec' 被忽略 4: In write.csv(codelists[[i]], paste0(names(codelists)[i], ... :
    • 试试修改后的代码。对于您的示例,原始作品适用于我的操作系统(MacO),但我没有添加可能造成问题的文件扩展名。修改后的代码使用文件名创建一个变量,以便您可以检查文件名(疾病)是否包含作为文件名一部分的无效字符(例如“/”或“\”)。 lapply 函数会在执行过程中列出每个文件的编号,以便告诉您哪里出了问题。
    猜你喜欢
    • 2022-12-12
    • 2020-06-18
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多