首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为列表中的每个元素导出csv文件并根据另一个数据集的匹配值命名这些文件?

如何为列表中的每个元素导出csv文件并根据另一个数据集的匹配值命名这些文件?
EN

Stack Overflow用户
提问于 2022-02-24 16:00:21
回答 1查看 58关注 0票数 1

我有数百种疾病的代码列表,每种疾病都有多个codes。我需要为每种疾病保存一个单独的代码列表,并以特定的代码列表名称命名它。

我使用以下命令为每种疾病创建了一个大的列表向量:

代码语言:javascript
运行
复制
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

    list <- codelist %>%
      dplyr::group_split(Disease)

这给了我一份每种疾病的清单:

代码语言:javascript
运行
复制
> list
<list_of<
  tbl_df<
    Disease: character
    Code   : double
  >
>[3]>
[[1]]
# A tibble: 3 × 2
  Disease  Code
  <chr>   <dbl>
1 anaemia   433
2 anaemia    96
3 anaemia   543

[[2]]
# A tibble: 2 × 2
  Disease                 Code
  <chr>                  <dbl>
1 Chronic Kidney Disease   912
2 Chronic Kidney Disease   456

[[3]]
# A tibble: 4 × 2
  Disease  Code
  <chr>   <dbl>
1 HIV       123
2 HIV       432
3 HIV       567
4 HIV       876

另外,我有一个df,上面有根据疾病分类的每个代码列表的名称:

代码语言:javascript
运行
复制
Disease <- as.character(c("anaemia", "Chronic Kidney Disease", "HIV"))
File_name <- c("ICD_anemia_2010", "ICD_CKD_2022", "ICD_HIV_2010")
Codelists_names <- data.frame(Disease, File_name)
Codelists_names
                 Disease       File_name
1                anaemia ICD_anemia_2010
2 Chronic Kidney Disease    ICD_CKD_2022
3                    HIV    ICD_HIV_2010

我希望为每个疾病导出一个单独的csv文件,根据与特定疾病匹配的column File_nameCodelists_names命名每个文件。

我怎么能这么做,拜托?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-02-24 16:54:38

这里基本上有两个步骤:

  1. 使用dplyr::left_join()在文件名中合并,然后通过File_name合并base::split()。这将为您提供一个命名的数据文件列表,其中每个名称都是要保存到的文件名。
  2. 使用purrr::iwalk()对列表进行迭代,将每个数据文件保存到其名称中指定的路径中。

代码语言:javascript
运行
复制
library(tidyverse)

codelist %>% 
  left_join(Codelists_names, by = "Disease") %>% 
  split(.$File_name) %>% 
  map(~ select(.x, !File_name)) %>% 
  iwalk(~ write_csv(.x, str_c(.y, ".csv")))

# check results
list.files(pattern = "csv")
# "ICD_anemia_2010.csv" "ICD_CKD_2022.csv"    "ICD_HIV_2010.csv"

read_csv("ICD_HIV_2010.csv")
# # A tibble: 4 x 2
#   Disease  Code
#   <chr>   <dbl>
# 1 HIV       123
# 2 HIV       432
# 3 HIV       567
# 4 HIV       876
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71254839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档