我使用dir()
从不是我的工作目录的目录中获取所需的CSV。我想遍历每个文件并添加一个名为"Date Created"
的列,并用CSV的首次创建日期填充所有行。我该如何实现?
在将文件合并到数据框中之前,我曾尝试问过类似的问题,并且在取消嵌套所有文件之前尝试更改新列时遇到错误。我觉得我的问题似乎是针对特定问题的,这似乎是一种更好的替代方法。
答案 0 :(得分:2)
罗纳克斯的答案就在眼前。这是使用dplyr
# using 'tidy' functions
library(dplyr)
# create example directory
temp_dir <- '~/test'
dir.create(temp_dir)
# create example csvs (lapply just applies the function to each number)
lapply(1:3,
function(x) {
# make file name
temp_name <- file.path(temp_dir, paste0(x, '.csv'))
# write data
write.csv(x = data.frame(a = x),
file = temp_name)
# sleep to get different created timestamps
Sys.sleep(1)
})
# check dir
dir(temp_dir, '.csv')
#> [1] "1.csv" "2.csv" "3.csv"
# read all and add Date Created
dir(temp_dir, '.csv', full.names = TRUE) %>%
lapply(function(x) {
read.csv(x) %>%
# add date created column
mutate(`Date Created` = file.info(x)$ctime)
}) %>%
bind_rows()
#> X a Date Created
#> 1 1 1 2019-08-23 12:42:56
#> 2 1 2 2019-08-23 12:42:57
#> 3 1 3 2019-08-23 12:42:58
由reprex package(v0.3.0)于2019-08-23创建
答案 1 :(得分:1)
我们首先可以在files
中获取所有要读取的文件的路径,在file_time
中获取它们各自的时间,然后使用Map
到{{1} }新列cbind
到其各自的数据框。这将返回数据帧列表。
Date_Created