2013-07-27 22 views
5

Czy można odczytać plik Excel z internetowego pliku ZIP?Czy R może odczytać spakowany plik XLS z adresu URL?

Próbowałam coś bym zrobił z 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) 

... bezskutecznie.

+0

Powinieneś zgłosić błąd/wyjście, które otrzymujesz. – Thomas

+0

Tak, przepraszam: 'read.xlsx' zwraca" nieznaną ścieżkę "(nie rozumie połączenia' unz() '). –

Odpowiedz

3

To trochę mniej wygodne, ale jak o:

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) 

Zawsze można zapakować to do readZipURL <- function(urlPath,basefn) {...} funkcji, jeśli chcesz to zrobić w sposób regularny (warto oczyścić pobranego XLS złożyć zbyt ...)

+0

Dzięki, ale próbuję to zrobić bez pobierania pliku ZIP. W jaki sposób twój kod może działać bez kopiowania ZIP na dysk? –

+0

Myślę, że naprawdę musielibyście uważnie przyglądać się temu, co robią zarówno tłumacze rozpakowujący * jak i * XLS - obaj musieliby być zdolni do pracy w trybie strumieniowym/pracy z przewodami. Chyba nie chcesz kopiować na dysk, ponieważ będziesz mieć duży plik ZIP ...? Możesz * być * w stanie umieścić coś razem z 'gdata :: xls2sep' (które zwykle tworzy tymczasowy plik) wysyłając zamiast tego do potoku, które' read.csv' może odczytać z ... zbyt trudne do zsynchronizowania w moim wolnym czasie. –

+0

Przyjmuję twoje rozwiązanie - nie mam pojęcia, czy 'read.xlsx' może faktycznie działać w ten sposób, i staje się zbyt skomplikowane, aby uniknąć pobierania ZIP w tym przypadku (nie jest nawet tak duże). –

2

ten pracował dla mnie

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)) 

czytam niektóre pliki CMS byłem zainteresowany na