R语言实现自动导入每日更新Excel数据集(排除节假日)
解决方案
可以通过自动计算符合要求的目标日期(排除周末和意大利法定节假日),再拼接生成文件路径的方式实现自动读取,具体步骤如下:
1. 安装并加载所需包
需要用到处理日期的lubridate、读取Excel的readxl,以及获取意大利法定节假日的timeDate包:
install.packages(c("lubridate", "readxl", "timeDate")) library(lubridate) library(readxl) library(timeDate)
2. 定义函数获取有效目标日期
写一个函数自动找到当前日期前的最近有效工作日(非周末、非意大利法定节假日):
get_valid_date <- function() { current_date <- Sys.Date() target_date <- current_date - days(1) # 循环往前推,直到找到符合要求的日期 while (wday(target_date) %in% c(1, 7) | isHoliday(target_date, holidayItaly())) { target_date <- target_date - days(1) } # 格式化为文件名需要的MM_DD_YYYY格式 format(target_date, "%m_%d_%Y") }
3. 自动生成路径并读取数据
用函数返回的日期拼接文件路径,再读取数据:
# 生成完整文件路径 file_path <- paste0("C:/Users/Seyma/Docs/DF_", get_valid_date(), ".xlsx") # 读取数据集 my.df <- read_excel(file_path)
关键说明
wday(target_date)返回日期对应的星期数,1代表周日,7代表周六,以此排除周末isHoliday(target_date, holidayItaly())会判断目标日期是否为意大利法定节假日,holidayItaly()默认获取当前年份的节假日,跨年份场景下循环逻辑会自动处理- 如果你的文件名日期格式是
DD_MM_YYYY(比如04_05_2023代表5月4日),只需把format函数里的参数改成"%d_%m_%Y"即可
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

