当使用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")