如何使用read.csv2.sql读取zip文件而不将其解压缩?

时间:2019-04-21 15:23:29

标签: r csv zip

在尝试使用read.csv2.sql进行特定的行过滤时,我试图读取一个zip文件而不将其解压缩到目录中。

可以下载here的压缩文件:

我尝试建立到read.csv2.sql的文件连接,但是似乎没有将文件连接作为“文件”的参数。

我已经在自己的计算机上安装了sqldf软件包。

这是我针对所描述问题的以下R代码:

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

### Download it
download.file("https://d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_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 个答案:

答案 0 :(得分:1)

这不使用read.csv2.sql,但是由于文件中只有约200万条记录,应该可以下载它,使用read.csv2读取它,然后在R中将其子集。 / p>

# download file creating zipfile
u <-"https://d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_power_consumption.zip"
zipfile <- sub(".*%2F", "", 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)