Я хочу загрузить ежеквартальные файлы "NDC-HCPCS-Crosswalk" за 2018 и 2019 годы и все последующие годы с веб-сайта cms.gov .
Просмотр названийфайлы, которые, как они кажутся, меняются незначительно для каждого квартала, но имеют одинаковую общую структуру:
year-mon / mon-year - * - NDC-HCPCS-Crosswalk.zip
Вот историческиеимена файлов, которые я хочу загрузить:
- 2018- январь-ASP-NDC-HCPCS-Crosswalk.zip
- 2018-April-ASP-NDC-HCPCS-Crosswalk.zip
- 2018-July-NDC-HCPCS-Crosswalk.zip
- 2018-Oct-NDC-HCPCS-Crosswalk.zip
- Январь-2019-ASP-NDC-HCPCS-Crosswalk.zip
- апрель-2019-ASP-NDC-HCPCS-Crosswalk.zip
- 2019-July-ASP-NDC-HCPCS-Crosswalk.zip
I 'Мы выяснили, как загрузить некоторые из этих файлов по отдельности, разархивировать их и прочитать содержащиеся в них файлы XLS, но я надеялся на более изящный или масштабируемый способ сделать это в будущем.
В настоящее время мой код выглядит следующим образом:
#DEFINE THE MONTHS OF THE FILES WE WANT TO RETRIEVE
months <- c("January", "April", "July", "Oct")
#FIND THE URLS OF THE FILES WE NEED
urls <- sprintf("https://www.cms.gov/Medicare/Medicare-Fee-for-Service-Part-B-Drugs/McrPartBDrugAvgSalesPrice/Downloads/%s-2019-ASP-NDC-HCPCS-Crosswalk.zip", months)
#DOWNLOAD FILES IF THEY DO NOT EXIST (https://nicercode.github.io/guides/repeating-things/)
download.maybe <- function(urls, refetch=FALSE, path = ".") {
dest <- file.path(path, basename(urls))
if (refetch || !file.exists(dest))
download.file(urls, dest)
dest
}
path <- "data"
dir.create(path, showWarnings = FALSE)
files <- sapply(urls, download.maybe, path=path)
Вместо передачи месяцев в sprintf я могу передать подстановочный знак, например, если он содержит (2018 или 2019) AND (Jan *, Ap *, Jul *), Окт *) потом скачивать файлы?