首页 > 解决方案 > 从文件夹中读取多个文件并通过 R 中的函数传递每个文件

问题描述

    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)。

标签: r

解决方案


你可以写一个函数

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)

推荐阅读