r - 导入数据并添加特定于不同文件源的 ID
问题描述
我有一个包含与患者patient_id
匹配的数据框。names
每个病人都有他/她自己的数据文件FirstNameLastName.csv
。为了匿名数据,我编写了函数,该函数read_in
将读取每个数据FirstNameLastName.csv
并将指定的数据添加patient_id
到其中。
为了进一步分析,我现在希望将所有匿名数据放在一个数据框对象中。我使用 purrr 包中的 map_df() 函数尝试了此操作,但是在将 ID 与每个读入.csv
文件匹配时遇到问题。有人可以帮助解决这个问题,这样结果就是一个数据框,其中包含所有具有受尊重 ID 的数据。
> patient_names
patient_id patient_name
1 1 Tina Turner
2 2 Michael Jackson
3 3 Michael Jordan
4 4 Dom Toretto
5 5 Lebron James
read_csv("LebronJames.csv")
Year Injury
<chr> <chr>
2020 Sprained Ankle
1990 Torn ACL
1995 Bruised Knee
2011 Sore Neck
2014 Headache
2019 Broken Leg
read_in <- function(path, patient_id= 1){
data <- read_delim(path, delim= ";",col_names = TRUE)
data <- add_column(data, patient_id= patient_names[["patient_id"]][id], .before = 1)
}
patient_id Year Injury
<int> <chr> <chr>
1 5 2020 Sprained Ankle
2 5 1990 Torn ACL
3 5 1995 Bruised Knee
4 5 2011 Sore Neck
5 5 2014 Headache
6 5 2019 Broken Leg
list.files(path= "/directory", pattern = ".csv", full.names = TRUE) %>%
map_df(read_in)
# A tibble: 1234 x 3
patient_id Year Injury
<int> <chr> <chr>
1 1 2012 Ankle
2 1 2014 Broken Arm
3 1 1999 Concussion
4 1 1987 Broken Finger
... ... ... ...
解决方案
试试这种方法 -
library(purrr)
library(readr)
filenames <- paste0(gsub('\\s', '', patient_names$patient_name), '.csv')
data <- map_df(filenames, read_csv, .id = 'patient_id')
filenames
应该创建一个要读取的文件名向量,并且data
应该将这些 csv 文件中的所有数据组合在一起,并为每个名为'patient_id'
.
推荐阅读
- google-cloud-platform - 从谷歌云数据存储迁移到谷歌云 sql
- php - 如何编辑此 .ini 文件以安装 slqsrv 扩展?
- flink-streaming - Flink 1.5 on yarn,如何禁用动态资源分配?
- javascript - 模块化 JS:如何传递变量和事件
- sql-server - 在同一 Amazon RDS 上创建重复的 SQL Server 数据库
- python - pip install vprof 失败
- c - 将内核模块添加到 ubuntu
- javascript - 为什么jquery图表不显示
- java - Thymeleaf 表单提交:CRUD 操作 UPDATE 无法正常工作。没有错误
- python - 在正则表达式中用单引号混淆密码