У меня есть папка, содержащая 5000 файлов CSV, каждый файл принадлежит одному местоположению и содержит ежедневные осадки за период с 1980 по 2015 год. Пример структуры файла выглядит следующим образом:
sample.file <- data.frame(location.id = rep(1001, times = 365 * 36),
year = rep(1980:2015, each = 365),
day = rep(1:365, times = 36),
rainfall = sample(1:100, replace = T, 365 * 36))
Я хочу прочитать один файл и рассчитать для каждого года общее количество осадков
и снова напишите вывод. Есть несколько способов сделать это:
Метод 1
for(i in seq_along(names.vec)){
name <- namees.vec[i]
dat <- fread(paste0(name,".csv"))
dat <- dat %>% dplyr::group_by(year) %>% dplyr::summarise(tot.rainfall = sum(rainfall))
fwrite(dat, paste0(name,".summary.csv"), row.names = F)
}
Метод 2:
my.files <- list.files(pattern = "*.csv")
dat <- lapply(my.files, fread)
dat <- rbindlist(dat)
dat.summary <- dat %>% dplyr::group_by(location.id, year) %>%
dplyr::summarise(tot.rainfall = sum(rainfall))
Метод 3:
Я хочу добиться этого, используя foreach
. Как я могу распараллелить вышеупомянутую задачу
используя do parallel
и for each
функцию?