r - 从文件夹中读取多个文件并通过 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)。
解决方案
你可以写一个函数
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)
推荐阅读
- python - 带优先队列的线程
- reference - 在 Latex 中用逗号替换引用中的括号
- angularjs - 安装 angularx-social-login 后出现弃用错误
- node.js - 我如何通过节点 js 在模型中使用函数查找值来获取
- ethereum - 我们可以在不同的区块链上部署相同的 ERC20 代币吗?
- c# - 无法解析符号
- php - PHPUnit Laravel 没有运行下一个测试用例
- tomcat - Tomcat (9.0.48)不是从 TLSv1.3 开始,并且 server.xml 中的显式密码:SSL 例程:SSL_CTX_set_cipher_list:JDK11 应用程序没有密码匹配
- python - Selenium 脚本捕获 100 个项目中的前几个项目
- google-cloud-platform - Google Keep API - 无法添加范围