导入数据并添加特定于不同文件源的 ID
Importing Data and adding ID specific for different file sources
我有一个包含 patient_id
与 names
患者相匹配的数据框。
每个患者都有 his/her 个自己的数据文件 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 文件的所有数据组合在一起,每个文件都有一个唯一的 ID,称为 'patient_id'
.
我有一个包含 patient_id
与 names
患者相匹配的数据框。
每个患者都有 his/her 个自己的数据文件 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 文件的所有数据组合在一起,每个文件都有一个唯一的 ID,称为 'patient_id'
.