将创建日期列添加到多个CSV文件

时间:2019-08-22 23:56:52

标签: r dplyr data-manipulation

我使用dir()从不是我的工作目录的目录中获取所需的CSV。我想遍历每个文件并添加一个名为"Date Created"的列,并用CSV的首次创建日期填充所有行。我该如何实现?

在将文件合并到数据框中之前,我曾尝试问过类似的问题,并且在取消嵌套所有文件之前尝试更改新列时遇到错误。我觉得我的问题似乎是针对特定问题的,这似乎是一种更好的替代方法。

2 个答案:

答案 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