使用tidyverse批量导入CSV时,如何添加提取自文件名的ID列?
批量导入CSV并添加来源标识的解决方案
你可以直接在map_df的读取逻辑中,提取每个文件的前4个字符作为来源标识,通过mutate添加新列。修改后的代码如下:
library(tidyverse) df <- list.files(path = "../Data/Raw_1HR", pattern = "\\.csv$", full.names = TRUE) %>% map_df(~read.csv(., skip = 7, sep = ",", header = TRUE, colClasses = "character") %>% mutate(source_id = str_sub(basename(.), 1, 4), .before = 1))
关键说明:
basename(.):从完整文件路径中提取纯文件名(比如将../Data/Raw_1HR/id01_data.csv转换为id01_data.csv)str_sub(basename(.), 1, 4):截取文件名的前4个字符,作为来源标识(比如从id01_data.csv得到id01)mutate(source_id = ...):添加名为source_id的新列,.before = 1参数可选,用来把新列放在数据框的第一列,方便快速查看数据来源- 确保你已经加载了
tidyverse包(stringr是其中一部分,负责字符串截取)
内容的提问来源于stack exchange,提问作者Thomas Speidel
相关产品推荐
相关产品推荐

