在多个文件上应用相同的功能

时间:2019-08-24 07:43:10

标签: r

我是新的R程序员。 我在一个文件夹中有成千上万个csv文件。所有csv文件的日期列具有与我所需格式不同的格式。 (更改格式后,我还要进行其他操作)

directory <- "/my/path/"   #(all csv files)   
file_names <- list.files(directory)

mutate(Date = as.POSIXct(Date, format = "%d.%m.%Y %H:%M:%S"))

现在我需要将此功能应用于所有csv的所有列。

2 个答案:

答案 0 :(得分:1)

您可以使用lapply,读取文件,更改Date列并返回修改后的数据框。

all_files <- lapply(file_names, function(x) {
    df <- read.csv(x)
    df$Date <- as.POSIXct(df$Date, format = "%d.%m.%Y %H:%M:%S")
    df
})

all_files是可以在其上进行进一步操作的数据帧的列表。


如果您想在更改格式后写回数据框,可以使用write.csv

lapply(file_names, function(x) {
   df <- read.csv(x)
   df$Date <- as.POSIXct(df$Date, format = "%d.%m.%Y %H:%M:%S")
   write.csv(df, x)
})

答案 1 :(得分:0)

我们可以在tidyverse

中完成此操作
library(readr)
library(purrr)
library(lubridate)
library(dplyr)
map(file_names, ~ read_csv(.x) %>%
                     mutate(Date = dmy_hms(Date)) %>%
                     write_csv(path = .x))