【问题标题】:Having trouble reading table using sqldf package (R)使用 sqldf 包 (R) 读取表格时遇到问题
【发布时间】:2016-05-06 17:37:10
【问题描述】:

背景:

我可以使用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 的功能,我成功​​地测试了read.csv.sql(),方法是使用以下代码将数据作为 1 个变量而不是所需的 5 个变量读入:

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' 内容 type 'text/plain' 长度 24846571 字节 (23.7 MB) 已下载 23.7 MB

sqldf 中的错误(sql,envir = p,file.format = file.format,dbname = dbname, : 未使用的参数 (fill = TRUE)

我使用sqldf 文档尝试了各种方法来解决错误,但均未成功。

问题:

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

【问题讨论】:

    标签: r sqldf read.csv


    【解决方案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, : 未使用的参数 (fill = TRUE)

    是因为read.csv.sql 不接受fill 参数。

    【讨论】:

    • 非常感谢,@eleventhend
    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多