Чтение нескольких файлов из папки и передача каждого файла через функцию в R - PullRequest
0 голосов
/ 30 апреля 2020
    filenames <- list.files("foldername", pattern="*.xlsx", full.names=TRUE)
for(file in filenames){

      data_preprocessed <- file %>% 
        group_by(date = floor_date(DATE,"month")) %>%
        summarize(SALES = sum(SALES)) %>%
        separate(date, sep="-", into = c("year", "month")) %>%
        mutate(lag_12 = shift(SALES,-12),
               lag_24 = shift(SALES,-24)) %>% 
        rowwise()
      write_xlsx(data_preprocessed,"file_name.xlsx")
    }

Все файлы должны быть прочитаны один за другим, а затем сохранены / записаны (write.xlsx) с другим именем.

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете написать функцию, которая

1) Читает файл

2) Выполняет все этапы обработки данных

3) Записывает новый файл

library(tidyverse)
library(lubridate)
library(data.table)

f1 <- function(file) {
   readxl::read_xlsx(file) %>%
      group_by(date = floor_date(DATE,"month")) %>%
      summarize(SALES = sum(SALES)) %>%
      separate(date, sep="-", into = c("year", "month")) %>%
      mutate(lag_12 = shift(SALES,-12),
             lag_24 = shift(SALES,-24))  %>%
      writexl::write_xlsx(paste0('new_', basename(file)))    
}

и делайте это для каждого файла.

lapply(filenames, f1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...