用tidyverse在R中循环



我正在尝试读取多个日期格式为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)

相关内容

  • 没有找到相关文章

最新更新