2015-06-09 2 views
2

Мне нужно импортировать файл Excel непосредственно с веб-сайта NYSE. URL-адрес электронной таблицы: https://quotespeed.morningstar.com/exportChartDataToExcel.jsp?tickers=AAPL&symbols=126.1.AAPL&st=1980-12-1&ed=2015-6-8&f=m&dty=1&types=1&ver=1.6.0&qs_wsid=E43474CC03753FE0E777D89877788ECB. Пробовал использовать gdata-пакет и сменить https на http, но все равно не работает. Кто-нибудь знает решение этой проблемы?R Импорт файла excel непосредственно из сети

EDIT: Должен быть импортированы в R непосредственно с веб-сайта (требование проекта)

+0

Проблема вы будете иметь является ссылка - это перенаправление и не указывает фактический файл * .xls. У вас есть ссылка на прямой файл? – Vedda

ответ

4

Без информации о том, почему использование пакета gdata не подходит для вас, я должен предположить. Убедитесь, что у вас есть Perl установлен - вы можете загрузить его на http://www.activestate.com/activeperl

Это работает для меня:

library('gdata') 

## URL broken into multiple lines for readability 
url <- paste("https://quotespeed.morningstar.com/exportChartDataToExcel.", 
    "jsp?tickers=AAPL&symbols=126.1.AAPL&st=1980-12-1&ed=2015-", 
    "6-8&f=m&dty=1&types=1&ver=1.6.0&qs_wsid=E43474CC03753FE0E", 
    "777D89877788ECB", sep = "") 
url <- gsub("https", "http",url) 
data <- read.xls(url, perl = "C:/Perl64/bin/perl.exe") 

Без perl = "path_to_perl.exe" я получил ошибку

Error in findPerl(verbose = verbose) : 
    perl executable not found. Use perl= argument to specify the correct path. 
Error in file.exists(tfn) : invalid 'file' argument 
+2

Если вы поместите' perl.exe 'на вашем пути, тогда вам не понадобится аргумент' perl = '. Также обратите внимание, что если по какой-то причине вы не хотите использовать gdata, то используя переменную 'url', определенную в ответе, вы можете сделать' download.file (url, «MasterPrice.xls», mode = «wb») 'to загрузите файл, а затем прочитайте его, используя один из множества пакетов в R, который может читать файлы Excel, такие как пакеты openxlsx, readxl или XLConnect. –

+0

@ G.Grothendieck Спасибо за примечание о добавлении 'perl' в' Path'! Я никогда не думал об этом. Также обратите внимание на комментарий к ответу @daattali, где @nellevin утверждает, что он не может выполнить обходное решение 'download.file()', хотя я бы предпочел это для более поздних проблем с совместимостью. – Therkel

+0

@ G.Grothendieck Что вы подразумеваете под добавлением 'perl' в' Path', чтобы избежать 'perl =' аргумента? Не могли бы вы показать пример кода? – nellevin

0

Используйте RCurl пакет для загрузки файла и readxl пакет Хедли читать первенствовать файл

+0

Должен быть импортирован в R непосредственно с веб-сайта (требование проекта) – nellevin

+0

Я не понимаю, что это значило бы. Ваша ссылка - это файл, поэтому ближайшая вещь «импортировать его прямо в R» означает сохранение файла и его чтение. Вы не можете загрузить файл в R. Возможно, вы хотите, чтобы R читал веб-страницу, но в этом случае вам не нужен файл. –

+0

Я думаю, что идея заключается в том, что файл не следует загружать на жесткий диск (даже временную папку), а скорее читать из Интернета непосредственно в память. –

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