使用sqldf包(R)读取表时遇到问题

时间:2016-05-06 17:37:10

标签: r sqldf read.csv

背景

我可以使用read.csv()功能从互联网成功提取特定数据集(如下面的代码所示)。但是,当我尝试使用sqldf包来加速使用read.csv.sql()的过程时,会产生错误。我尝试了各种解决方案但似乎无法解决这个问题。

我可以使用以下代码成功提取数据并使用read.csv()创建我想要的数据框:

ce_data <- read.csv("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                     fill=TRUE, header=TRUE, sep="")

为了在我的机器上测试sqldf的功能,我通过使用以下代码将数据读入1变量而非5所需成功测试read.csv.sql()

library(sqldf)

ce_data_sql1 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                         sql = "select * from file")

为了产生我使用read.csv()但使用read.csv.sql()的速度的结果,我尝试了这段代码:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
                             fill=TRUE, header=TRUE, sep="", sql = "select * from file")

不幸的是,它产生了这个错误:

  

尝试访问网址   'http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData'内容   类型'text / plain'长度24846571字节(23.7 MB)下载23.7 MB

     

sqldf中的错误(sql,envir = p,file.format = file.format,dbname =   dbname ,: unused arguments(fill = TRUE)

我尝试过使用sqldf文档解决错误的各种方法,但都没有成功。

问题:

是否有一个解决方案,我可以使用read.csv.sql()在此表中阅读所需的5个变量?

1 个答案:

答案 0 :(得分:1)

您将其作为单个变量读取的原因是您没有正确指定原始文件的分隔符。 请尝试使用以下sep = "\t",以制表符分隔:

ce_data_sql2 <- read.csv.sql("http://download.bls.gov/pub/time.series/cx/cx.data.1.AllData", 
sep = "\t", sql = "select * from file")

你在最后一个例子中得到的错误:

  

sqldf中的错误(sql,envir = p,file.format = file.format,dbname =   dbname ,: unused arguments(fill = TRUE)

是由于read.csv.sql不接受fill参数。