Я бы хотел скачать и открыть следующий Excel-файл с месячными и годовыми индексами потребительских цен непосредственно из R.
https://www.bfs.admin.ch/bfsstatic/dam/assets/7066959/master (ссылку можно найти на этом сайте: https://www.bfs.admin.ch/bfs/de/home/statistiken/preise/landesindex-konsumentenpreise/lik-resultate.assetdetail.7066959.html)
Раньше я загружал этот файл вручную, используя браузер, сохранял его локально на моем компьютере, затем открывал xlsx-файл с R и работал с данными без проблем.
IТеперь я попытался прочитать файл непосредственно из R, но пока безуспешно. Как вы можете видеть из приведенного выше URL-адреса, расширение .xlsx и т. п. отсутствует, поэтому я решил, что файл каким-то образом заархивирован. Вот что яЯ пытался до сих пор и где я застрял.
library(foreign)
library(xlsx)
# in a browser, this links opens or dowloads an xlsx file
likurl <- "https://www.bfs.admin.ch/bfsstatic/dam/assets/7066959/master"
temp <- tempfile()
download.file(likurl, temp)
list.files <- unzip(temp,list=TRUE)
data <- read.xlsx(unz(temp,
+ list.files$Name[8]), sheetIndex=2)
Результат последнего шага:
Error in +list.files$Name[8] : invalid argument to unary operator
Я не совсем понимаю функцию unz, но вижу, что эточто-то не так при чтении файла справки для unz (я нашел это предлагаемое решение где-то в сети).
Я также попробовал следующий, другой подход:
library(XLConnect)
likurl <- "https://www.bfs.admin.ch/bfsstatic/dam/assets/7066959/master"
tmp = tempfile(fileext = ".xlsx")
download.file(likurl, tmp)
readWorksheetFromFile(tmp, sheet = 2, startRow = 4,
colNames = TRUE, rowNames = FALSE)
с последней строкой, возвращающейся как результатt:
Error: ZipException (Java): invalid entry size (expected 1644 but got 1668 bytes)
Я был бы очень признателен за любую помощь в том, как я могу открыть эти данные и работать с ними, как обычно, при чтении данных из Excel в R. Заранее большое спасибо!