从不同的文件夹导入文件,添加具有从每个文件名提取的值的列?

亚伦·格兹(Aaron Gzz)

我正在与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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从不同的文件夹导入多个csv文件,并将文件名提取为附加列:标头信念和多文件夹大小写

从具有相同文件名的venv文件夹导入

Windows 使用 FOR 循环为当前文件夹中具有 EXIF 值的文件名批量添加后缀

从具有指定文件夹名称的文件夹结构中获取文件名

无法从不同的文件夹链接\导入原始文件

如何从不同的文件夹导入文件?

如何将多个 tgz 文件提取到具有部分文件名的单独文件夹中?

列出文件夹中的所有文件,并在每个文件名之间添加句子

将相同文件名从不同文件夹复制到新文件夹时附加文件名的循环

从bash-scipt中具有相同文件名的不同文件夹中加载多个文件

Powershell脚本获取具有文件夹的文件名和文件大小的csv文件

将具有不同扩展名的最旧文件名移动到公共文件夹。Python

如何创建具有相同文件名但具有不同文件扩展名的多个文件的 zip 文件夹

从资产文件夹获取仅具有.txt扩展名的文件的文件名

递归列出具有文件名,文件夹名和权限的文件

将文件从单个文件夹移动到具有文件名等名称的现有文件夹

SSIS:从文件夹导入MAX(文件名)

从不同的文件夹级别导入类-Python

从不同目录/文件夹导入模块的正确语法

VBA循环浏览具有特定文件名的文件夹中的文件

循环浏览文件名具有特定日期的文件上的文件夹

在文件夹中文件名的开头添加序号

Powershell:对于每个文件夹,请附加所有文件名

如何遍历文件夹中的文件以移动具有特定扩展名的每个文件

如何使用python创建具有名称的多个文件夹,并将多个zip提取到每个不同的文件夹?

展平具有重复文件名的复杂文件夹结构

gulp任务,根据文件名动态创建具有名称的文件夹

如何使用Perl rmtree删除具有Unicode字符文件名的文件夹?

在Java中读取文件名的开头并创建具有该名称的文件夹