2017-01-24 2 views
0

Я хотел бы автоматически считывать в R-файл, который находится впрочитать файл Excel, встроенный в сайт

https://clients.rte-france.com/servlets/IndispoProdServlet?annee=2017

Эта ссылка создает автоматическую загрузку в ZipFile. Этот zip-файл содержит файл Excel, который я хочу прочитать в R.

Есть ли у вас какие-либо предложения по этому поводу? Благодарю.

+1

Поиск файла [download.file] (https://stat.ethz.ch/R-manual/R-devel/library/utils/html/download.file.html). Существует несколько десятков вопросов о загрузке. Просто убедитесь, что вы используете 'wb' (двоичный) в качестве режима загрузки –

+0

Спасибо. Мне удалось загрузить файл download.file ("https://clients.rte-france.com/servlets/IndispoProdServlet?annee=2017", dest = "dataset.zip", mode = "wb") unzip ("набор данных. zip ")". Проблема в том, что это формат Excel 97, и я не могу прочитать его в R с регулярным readxl. – oana

ответ

0

Комментарий Panagiotis для использования download.file(), как правило, хороший совет, но я не мог заставить его работать здесь (и было бы интересно узнать, почему). Вместо этого я использовал httr.
(Edit: получил его, я отменил арг из download.file() ... Повторяй за мной: всегда использовать именованные арг ...)

Другая проблема с этими данными: оказывается не быть регулярным xls файла, Я не мог открыть его с еще отличным пакетом readxl. Похоже, что вкладка разделена плоским файлом, но не имеет успеха с read.table(). readr::read_delim() сделал.

library(httr) 
library(readr) 
r <- GET("https://clients.rte-france.com/servlets/IndispoProdServlet?annee=2017") 
# Write the archive on disk 
writeBin(r$content, "./data/rte_data") 
rte_data <- 
    read_delim(
    unzip("./data/rte_data", exdir = "./data/"), 
    delim = "\t", 
    locale = locale(encoding = "ISO-8859-1"), 
    col_names = TRUE 
) 

Все еще существуют проблемы с синтаксическим разбором, но не уверены, что их следует решать в этом вопросе SO.

+0

Большое спасибо. Задача решена! – oana

+0

Множество сайтов поддельного экспорта Excel, отправив простой CSV или, что еще хуже, таблицу HTML с поддельным расширением и типом контента. Это крайне лениво, поскольку «xlsx» (единственный поддерживаемый формат) - это просто файлы с zip-файлами и, следовательно, много * меньше *, чем текстовые файлы. Существует множество библиотек, пакетов и т. Д., Которые генерируют файлы '.xlsx' напрямую и на самом деле * проще * использовать, чем генерировать CSV, но .... интеллектуальная лень –

Смежные вопросы