2013-07-27 2 views
5

Возможно ли прочитать файл Excel из онлайн-файла ZIP?Может ли R читать zipped-файл XLS с URL-адреса?

я что-то пытается, как бы я сделал с read.csv:

nuts = url("http://ec.europa.eu/eurostat/ramon/documents/nuts/NUTS_2010.zip") 
xlsx::read.xlsx(unz(nuts, "NUTS_2010.xls"), 1) 
close(nuts) 

... безрезультатно.

+0

Вы должны сообщить об ошибке/выходе, который вы получаете. – Thomas

+0

Да, извините: 'read.xlsx' возвращает« неизвестный путь »(он не понимает соединение' unz() '). –

ответ

3

Это немного менее удобно, но как насчет:

basefn <- "NUTS_2010" 
urlPath <- "http://ec.europa.eu/eurostat/ramon/documents/nuts/" 
xlsFile <- paste0(basefn,".xls") 
zipFile <- paste0(basefn,".zip") 
download.file(paste0(urlPath,zipFile),zipFile) 
unzip(zipFile) 
## I had trouble with xlsx::read.xlsx, but gdata::read.xls was OK 
## xlsx::read.xlsx(xlsFile,1) 
gdata::read.xls(xlsFile) 
unlink(zipFile) 

Вы всегда можете упаковать это в readZipURL <- function(urlPath,basefn) {...} функции, если вы хотите сделать это на регулярной основе (вы можете очистить загруженный XLS файл тоже ...)

+0

Спасибо, но я пытаюсь сделать это, не загружая ZIP-файл. Любой способ, которым ваш код мог бы работать без копирования ZIP на диск? –

+0

Думаю, вам действительно нужно тщательно изучить, что делают переводчик unzipper * и * XLS - они оба должны были бы работать в потоковом режиме/работать с трубами. Думаю, вы не хотите копировать на диск, потому что у вас будет большой ZIP-файл ...? Вы * можете * уметь что-то помещать вместе с 'gdata :: xls2sep' (который обычно создает временный файл), вместо этого отправляя в трубу, что' read.csv' может читать из ... слишком сложно для меня собрать в свободное время. –

+0

Я приму ваше решение - я не знаю, сможет ли 'read.xlsx' работать таким образом, и становится слишком сложным, чтобы избежать загрузки ZIP в этом случае (это даже не так уж и важно). –

2

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

options(java.parameters = "-Xmx4g") 
library(XLConnect) 
temp <- tempfile() 
zipfile <- paste0("https://www.cms.gov/Research-Statistics-Data-and-Systems/Statistics-Trends-and-Reports/MCRAdvPartDEnrolData/Downloads/" 
        ,year,"/",year,"-", "Low-Income-Subsidy-Contract-Enrollment-by-County.zip") 
download.file(zipfile,temp) 

filename <- paste0("WEB Tables LIS by state -county ",month2,"-","1","-",year,".xlsx") 

temp1 <- unzip(temp) 
assign(paste0("scc_pdp_lis_",year),readWorksheetFromFile(temp1,sheet=1,startRow=7,header=F)) 

Я читаю некоторые CMS файлы, я был заинтересован в

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