Используя R для загрузки заархивированного файла данных, извлечения и данных импорта

@EZGraphs на записях Твиттера: "Много csvs онлайн заархивировано. Существует ли способ загрузить, разархивировать архив и загрузить данные в data.frame, использующий R? #Rstats"

Я также пытался сделать это сегодня, но закончил тем просто, что загрузил zip-файл вручную.

Я попробовал что-то как:

fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")

но я чувствую, как будто я далеко. Какие-либо мысли?

117
задан Jeromy Anglim 16 June 2010 в 13:52
поделиться

2 ответа

Zip-архивы на самом деле подробнее о «файловой системе» с метаданными содержимого и т. д. См. справку (распаковать) для подробностей. Итак, чтобы сделать то, что вы набросали выше, вам нужно

  1. Создать темп. имя файла (например, tempfile () )
  2. Используйте download.file () , чтобы загрузить файл во временный файл. file
  3. Используйте unz () , чтобы извлечь целевой файл из temp. file
  4. Удалите временный файл с помощью unlink ()

, который в коде (спасибо за базовый пример, но это проще) выглядит как

temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)

сжатый ( .z ) или сжатый с помощью gzip. Файлы ( .gz ) или bzip2ed ( .bz2 ) - это просто файл , который вы можете читать непосредственно через соединение. Поэтому попросите поставщика данных использовать это вместо этого :)

165
ответ дан 24 November 2019 в 02:07
поделиться

Для записи, я попытался перевести ответ Дирка в код :-P

temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
con <- unz(temp, "a1.dat")
data <- matrix(scan(con),ncol=4,byrow=TRUE)
unlink(temp)
27
ответ дан 24 November 2019 в 02:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: