我正在与R合作进行一些数据分析。我已将数据保存在与其所属年份相关的单独文件夹中。在year文件夹中,有几个类别文件夹,每个类别文件夹都有需要导入的.csv和.dat文件。文件名在“ category_outlet_timeinterval.csv”或“ .dat”中具有类似的结构。每年包含相同类别,每个类别包含相同类型的文件,只是时间间隔不同。
我需要从几个不同的文件夹中导入这些文件,并为Year,Category和Outlet添加一列。这些列中的值需要从每个文件名中读取。添加列后,文件将合并到单个数据框中。
我已经使用fread合并了一部分:
# (1) Create File List
csv_files <- list.files (path = "R/win-library/Practice",
pattern = "*.csv",
recursive = T,
full.names = T)
# (2) Import All csv with 'fread()'
DATA_ALL <- rbindlist (lapply (csv_files, fread))
view(DATA_ALL)
问题:
-从文件名作为子字符串检索信息并相应地创建列的最有效方法是什么?
-是否必须使每个文件都成为一个数据帧,还是可以从文件列表中全部完成?此问题的主要原因是文件太大。
我是R语言的初学者,想尽其所能。对不起,如果我不清楚。提前致谢!
您可以在数据框中创建包含路径和文件名信息的列:
files <- list.files(path = path,
full.names = TRUE,
all.files = FALSE,
recursive = TRUE)
files <- files[!file.info(files)$isdir]
data <- lapply(files,
function(x) {
data <- read_xls(x, sheet = 1)
data$File_name <- basename(x)
data$Path <- dirname(x)
data
})
然后,您可以从这些列中得出所需的信息(例如,年份)。我通常会使用stringr
诸如str_detect
或的功能,以str_extract
从文件名和路径中提取相关信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句