Using R to download zipped data file, extract, and import data
connection, r, r-faq, zip
Solution
Zip archives are actually more a 'filesystem' with content metadata etc. See `help(unzip)` for details. So to do what you sketch out above you need to
- Create a temp. file name (eg `tempfile()`)
- Use `download.file()` to fetch the file into the temp. file
- Use `unz()` to extract the target file from temp. file
- Remove the temp file via `unlink()`
which in code (thanks for basic example, but this is simpler) looks like
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)
Compressed (`.z`) or gzipped (`.gz`) or bzip2ed (`.bz2`) files are just the file and those you can read directly from a connection. So get the data provider to use that instead :)
Problem
@EZGraphs on Twitter writes: "Lots of online csvs are zipped. Is there a way to download, unzip the archive, and load the data to a data.frame using R? #Rstats" I was also trying to do this today, but ended up just downloading the zip file manually. I tried something like: ``` fileName <- "http://www.newcl.org/data/zipfiles/a1.zip" con1 <- unz(fileName, filename="a1.dat", open = "r") ``` but I feel as if I'm a long way off. Any thoughts?