首页 > 解决方案 > 在 R 中创建一个迭代循环以读取文件夹中的所有 Excel 文件,执行相同的功能,并导出为新文件

问题描述

我目前的问题是我写了以下内容:

list.of.packages <- c("xlsx","dplyr","tidyverse")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
lapply(list.of.packages, require, character.only=T)

setwd("C:/Users/Google Drive/Global MIS/Global profiles/profiles_as_data")

AEC_data <- read.xlsx("G-AEC-DATA.xlsx", sheetIndex = 1, as.data.frame = T, check.names = F)

rownames(AEC_data) = make.names(AEC_data$AEC, unique = T)
AEC_data <- tibble::rownames_to_column(AEC_data,"Variable")
AEC_data <- select(AEC_data, -2)

AEC_data_reshaped <- reshape(AEC_data,
                             direction = "long",
                             varying = list(names(AEC_data)[2:17]),
                             v.names = "Value",
                             idvar = "AEC",
                             timevar = "Year",
                             times = 2004:2019)

AEC_data_reshaped <- select(AEC_data_reshaped, -4)
AEC_data_reshaped$Company <- "AEC"

write.xlsx(AEC_data_reshaped, "C:/Users//Google Drive/Global MIS/Global profiles/profiles_as_data_long/G-AEC-DATA-LONG.xlsx", row.names = F, showNA = F)

这只是读入 G-AEC-DATA.xlsx,将其处理成长格式并进行一些清理。然后它将其输出到具有新名称的新文件夹中。

我的问题是我必须为 30 个 xlsx 文件执行此操作。例如,我基本上需要找到并替换“AEC”并再次迭代“ABC”。

我猜我需要设置一个列表,例如:

fileNames <- c("AEC.xlsx","ABC.xlsx")

例如,然后遍历每个文件名。所有原始文件的格式完全相同,我只需要切换出 ISO3 代码并遍历每个文件,

谢谢。

标签: rexceliterationxlsx

解决方案


也许你可以做这样的事情:

my_xlsx_files <- dir(path=my_path)
for (file in my_xlsx_files){
   #do what you want here and save
}

推荐阅读