我有数百种疾病的代码列表,每种疾病都有多个codes
。我需要为每种疾病保存一个单独的代码列表,并以特定的代码列表名称命名它。
我使用以下命令为每种疾病创建了一个大的列表向量:
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)
这给了我一份每种疾病的清单:
> 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
,上面有根据疾病分类的每个代码列表的名称:
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_name
从Codelists_names
命名每个文件。
我怎么能这么做,拜托?非常感谢。
发布于 2022-02-24 16:54:38
这里基本上有两个步骤:
dplyr::left_join()
在文件名中合并,然后通过File_name
合并base::split()
。这将为您提供一个命名的数据文件列表,其中每个名称都是要保存到的文件名。purrr::iwalk()
对列表进行迭代,将每个数据文件保存到其名称中指定的路径中。。
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
https://stackoverflow.com/questions/71254839
复制相似问题