问题描述
我想用不同的 Excel 文件重复这个过程,我想为此做一个循环,但我不知道从哪里开始。
# Route in excel
path <- "mar_2016.xls"
# Unificate data for Sheet
data_mar16 = path %>%
excel_sheets() %>%
set_names() %>%
map_df(~ read_excel(path = path,sheet = .x),.id = "Sheet")
# Select columns
data_mar16 <- data_mar16%>% select("Sheet","F_H","PE_H","NO")
# Filter values of column Sheet
data_mar16 <- filter(data_mar16,Sheet %in% c("A","C","B" ))
# Save the data
write_xlsx(data_mar16,"mar16.xlsx")
有什么想法吗?
解决方法
因为没有测试数据,所以我把它写在一个文本文件中......所以可能有一个错字:
# Route to multiple excel files
paths <- c("mar_2016.xls","mar_2017.xls")
# run a loop for the length of your char vector with files
for (i in 1:length(paths)){
# select position from vector acording to loop index
file <- paths[i]
# Unificate data for Sheet
data <- excel_sheets(file) %>%
set_names() %>%
map_df(~ read_excel(path = file,sheet = .x),.id = "Sheet") %>%
select("Sheet","F_H","PE_H","NO") %>%
filter(Sheet %in% c("A","C","B" ))
# Save the data
write_xlsx(data,file)
}
另一种选择是将代码转换为函数,然后通过 map() 将其应用于向量(或在 map 调用中将其全部写入)。