我正在尝试读取多个日期格式为dd-mm-yyyy的csv文件。我想将月份转换为季节,为此我使用了以下代码(用于一个csv文件(:
x= data %>%
dplyr::mutate(year = lubridate::year(UDATE),
month = lubridate::month(UDATE),
day = lubridate::day(UDATE))
x %>%
mutate(season = case_when(
month %in% c('3', '4', '5', '6') ~ 'Summer',
month %in% c('7', '8', '9', '10') ~ 'Monsoon',
month %in% c('11', '12', '1', '2') ~ 'Winter'
))
现在,我想同时对多个csv文件运行此操作,并将这些文件与转换后的数据帧一起导出,以便将我的月份转换为季节。
有人能建议我如何将其同时放入多个csv文件的循环函数中吗。
谢谢
如果没有数据来重现,这有点难以帮助,所以我写了一些通用代码,可能需要一些调整来解决您的问题。
首先,我将创建一个导入、转换和导出数据的函数。
prep_data <-
function(file_name){
data <-
read.csv2(file_name) %>%
dplyr::mutate(
year = lubridate::year(UDATE),
month = lubridate::month(UDATE),
day = lubridate::day(UDATE),
season = case_when(
month %in% c('3', '4', '5', '6') ~ 'Summer',
month %in% c('7', '8', '9', '10') ~ 'Monsoon',
month %in% c('11', '12', '1', '2') ~ 'Winter'
)
#I put "_new" as prefix to not overwrite the original .csv
write.csv2(file = paste0("new_",file_name))
}
然后我会创建一个向量,其中包含我所有的文件名。
all_files <- list.files(pattern = "*.csv",path = "your path with the csv files",full.names = TRUE)
最后,将该函数应用于所有文件。
purrr::map(.x = all_files,.f = prep_data)