在r中使用map_df时,将文件名添加到新列中



当使用purrr包中的map_df将数据放入一个数据帧时,是否有一种快速简便的方法可以使用dplyr添加一个名为"site_id"的列,该列根据文件名的编号填充行?

例如,my.files将读入两个csv文件:"H:/Documents/2015.csv";以及";H:/Documents/2021.csv";

my.files <- list.files(my.path, pattern = "*.csv", full.names = TRUE)

然后,我使用map_df将所有数据放入一个数据帧中,但我想创建一个名为"site_id"的附加列,该列将用原始文件标题填充该文件的每一行,例如2015或2021

我目前将.csv文件与以下代码合并在一起:

temp.df <- my.files %>% map_df(~read.csv(., skip = 15))

但我设想使用变异来提供帮助,但不确定它将如何工作。。。

temp.df <- my.files %>% map_df(~read.csv(., skip = 15) %>%
mutate(site_id = ????))

非常感谢您的帮助。

如果我们想使用mutate,我们可以使用imap

library(dplyr)
library(purrr)
setNames(my.files, my.files) %>%
imap_df(~ read.csv(.x, skip = 15) %>%
mutate(site_id = .y))

或在map中指定.id

setNames(my.files, my.files) %>%
map_dfr(read.csv, skip = 15, .id = "site_id")

使用purrr&dplyr:

temp.df <- my.files %>%
purrr::set_names() %>% 
purrr::map(., ~read.csv(., skip = 15)) %>% 
dplyr::bind_rows(.id = "site_id")

相关内容

  • 没有找到相关文章

最新更新