一次导入多个csv并添加文件名列

问题描述 投票:0回答:1

我正在使用 leerssej here 提供的优雅的 tidyverse 解决方案来读取多个 csv,如下所示:

df <- list.files(path       = "../Data/Raw_1HR",
                 pattern    = "\\.csv$",
                 full.names = T) %>%
map_df(~read.csv(.,
                 skip       = 7,
                 sep        = ",",
                 header     = T,
                 colClasses = "character"))

但是,我需要向每个单独的数据帧添加一列来表示它来自哪里。这包含在文件名中。假设文件名是

id01_foo.csv
id02_foo.csv
等,其中名称由前 4 个字符表示(即 id01、id02 等)。

如何将这些 id 作为字符列合并到生成的

df
对象中?

r dplyr tidyverse rstudio
1个回答
0
投票

如果我们将

list.files
的结果命名,然后使用
map_dfc(..., .id="filename")
,它将成为框架的新列。

df <- list.files(path       = "../Data/Raw_1HR",
                 pattern    = "\\.csv$",
                 full.names = T) %>%
setNames(., nm = basename(.)) %>%
map_df(~read.csv(.,
                 skip       = 7,
                 sep        = ",",
                 header     = T,
                 colClasses = "character"),
       .id = "filename")

这将根据文件名命名它们(使用

basename(.)
),但我们可以仅使用
setNames(nm = .)
轻松使用整个路径。

© www.soinside.com 2019 - 2024. All rights reserved.