Как использовать read.csv2.sql для чтения zip-файла без его разархивирования?

#r #csv #zip

#r #csv #zip

Вопрос:

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

Zip-файл можно загрузить здесь :

Я попытался настроить подключение к файлу read.csv2.sql , но, похоже, он не принимает подключение к файлу в качестве параметра для «file».

Я уже установил sqldf пакет на свой компьютер.

Это мой следующий R-код для описанной проблемы:

 ### Name the download file
zipFile <- "Dataset.zip"

### Download it
download.file("https://d396qusza40orc.cloudfront.net/exdata/data/household_power_consumption.zip",zipFile,mode="wb")

## Set up zip file directory
zip_dir <- paste0(workingDirectory,"/Dataset.zip")

### Establish link to "household_power_consumption.txt" inside zip file
data_file <- unz(zip_dir,"household_power_consumption.txt")

### Read file into loaded_df
loaded_df <- read.csv2.sql(data_file , sql="SELECT * FROM file WHERE Date='01/02/2007' OR Date='02/02/2007'",header=TRUE)

### Error Msg
### -Error in file(file) : invalid 'description' argument
  

Комментарии:

1. AFAIK, вы не можете этого сделать, по крайней мере, не так, как вы планируете, потому что read.csv2.sql не работает с ZIP-файлами.

Ответ №1:

Это не используется read.csv2.sql , но поскольку в файле всего ~ 2 миллиона записей, должно быть возможно просто загрузить его, прочитать в using read.csv2 , а затем подмножество в R.

 # download file creating zipfile
u <-"https://d396qusza40orc.cloudfront.net/exdata/data/household_power_consumption.zip"
zipfile <- sub(".*/", "", u)
download.file(u, zipfile)

# extract fname from zipfile, read it into DF0 and subset it to DF 
fname <- sub(".zip", ".txt", zipfile)
DF0 <- read.csv2(unz(zipfile, fname))
DF0$Date <- as.Date(DF0$Date, format = "%d/%m/%Y")
DF <- subset(DF0, Date == '2007-02-01' | Date == '2007-02-02')

# can optionally free up memory used by DF0
# rm(DF0)
  

Комментарии:

1. Разархивирование файла и последующее его удаление выглядит хорошо. Но я хотел бы подробнее изучить сценарий, в котором файл не требуется разархивировать для целей обучения.