【问题标题】:No results using read.csv.sql使用 read.csv.sql 没有结果
【发布时间】:2016-01-03 15:01:12
【问题描述】:

我有一个 6 GB 的 csv 文件,我正在尝试使用 sqldf 包中的 read.csv.sql 将其读入 R。由于某种原因,结果返回 0 个结果。我的代码有什么问题?我收到“关闭未使用的连接”的警告消息,这可能与没有返回结果的事实无关。我的代码如下。

     TestData <- read.csv.sql("2025_nonroad_ff10_NCD20130831_23feb2015_v3_part1.csv", sql = "select * from file where poll == 'EXH__100414';", header=TRUE, skip=27, eol="\n", sep=",")

如果我运行一个更简单的 SQL 语句:select * from file limit 2,结果是:

【问题讨论】:

    标签: r csv sqldf


    【解决方案1】:

    也许这次修订可能会有所帮助:

    TestData <- read.csv.sql("2025_nonroad_ff10_NCD20130831_23feb2015_v3_part1.csv", sql = "select * from file where poll = 'EXH__100414'", header=TRUE, skip=27, eol="\n", sep=",")
    

    它们只是微小的变化:

    • 删除了 sql 语句中的双等号
    • 删除了结束分号,在其他程序中需要结束分号,但在 read.csv.sql 中不需要

    如果这不起作用,我们需要尝试隔离问题

    尝试更简单的 SQL,例如只显示前两条记录。 select * from file limit 2,这还能用吗?

    如果它工作,那么这意味着其他一切都在工作,但你原来的 sql 条件是坏的,错误的等等。

    如果不是,则意味着 read.csv.sql 参数的其余部分、文件或 read.csv.sql 本身存在其他问题。

    【讨论】:

    • 不幸的是,小修改没有奏效。幸运的是,代码“select * from file limit 2”确实有效!现在我只是不知道为什么我的原始查询不起作用。我注意到数据框中的结果带有引号,格式是字符。引号是不是把它扔掉了?
    • 很高兴听到这个消息。如果没有隐私问题,现在更好的方法可能是您可以在原始帖子中发布“select * from file limit 2”的结果。如果存在隐私问题,那么如果可能的话,您能否从结果中发布“投票”列的内容,以便我们可以查看是否有关于值、格式等的新线索。您关于 >data frame 的问题是带引号和格式是字符,你的意思是你做了一个 str(TestData) 并显示其中大多数是字符的格式?无论如何,摘录或显示限制结果会有所帮助。
    • 发布了上面结果的图片。点击“结果”。此外,我正在处理其他列中的其他数据,但我得到了一个不同的错误:“预期有 45 列数据,但找到了 21 列”。原始文件共有 45 列,但实际上只有 21 列有数据。
    • 我假设 poll 列是字符,因为全局环境中的 TestData 对象将变量 poll 显示为 chr。
    • 所以你尝试了 sql select * from file where poll = 'EXH__100414' 并且它不起作用但我看到屏幕截图这样的值 EXH__100414 确实存在。嗯,试试select * from file where ann_value = 0.001080156 怎么样,其中0.001080156 是根据您的屏幕截图已知存在的值(还要仔细检查是否显示了整个值,或者该列是否正在裁剪该值)。我们知道 ann_value 不是 chr,所以如果它适用于非 chr 类型,那么这意味着我们需要进一步研究我们如何匹配 chr 类型。
    猜你喜欢
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多