Можно ли прочитать этот файл в R, не открывая файл вручную и не сохраняя его как файл Excel. Ниже показано, что этот файл на самом деле не является файлом Excel.
https://www.sec.gov/Archives/edgar/data/320193/000119312511192493/Financial_Report.xls
url <- "https://www.sec.gov/Archives/edgar/data/320193/000119312511192493/Financial_Report.xls"
temp_xls <- tempfile(fileext = ".xls")
download.file(url, destfile = temp_xls, mode = "wb")
readxl::format_from_signature(temp_xls)
#> [1] NA
readr::read_lines(temp_xls, n_max = 5)
#> [1] "MIME-Version: 1.0"
#> [2] "X-Document-Type: Workbook"
#> [3] "Content-Type: multipart/related; boundary=\"----=_NextPart_e3144909_1d60_4840_908e_3419ae0a14d3\""
#> [4] ""
#> [5] "This document is a Single File Web Page, also known as a Web Archive file. If you are seeing this message, your browser or editor doesn't support Web Archive files. Please download a browser that supports Web Archive, such as Microsoft Internet Explorer."
unlink(temp_xls)
1) Есть ли какое-либо текущее решение для чтения этого файла в R
2) Можно ли автоматизировать ручное открытие файла и сохранение его в формате, читаемом в R
Возможным решением является использование httr
:
library(httr)
library(XML)
library(magrittr)
h <- GET("https://www.sec.gov/Archives/edgar/data/320193/000119312511192493/Financial_Report.xls") %>%
content("text", encoding = "UTF8") %>%
readHTMLTable()
изменить: добавить версию, которая использует имена рабочих листов в качестве имен для таблиц
library(httr)
library(XML)
library(xml2)
library(magrittr)
ctnt <- GET("https://www.sec.gov/Archives/edgar/data/320193/000119312511192493/Financial_Report.xls") %>%
content("text", encoding = "UTF8")
tbls <- readHTMLTable(ctnt)
tbls <- tbls[names(tbls)! = "NULL"]
names(tbls) <- read_html(gsub("<!--[if gte mso 9]>", "", ctnt, fixed=TRUE)) %>%
xml_find_all(".//name") %>%
xml_text()
добавил кое-что, чтобы установить имена, но вам нужно дважды проверить
Это отличное решение! Интересно, есть ли способ назначить имена вкладок именам в списке.