我是新的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的所有列。
答案 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))