【问题标题】:Large CSV with commas and quotes as delimiters and an open quote somethere - how should i import this in R?带有逗号和引号作为分隔符和开放引号的大型 CSV - 我应该如何在 R 中导入它?
【发布时间】:2018-04-10 12:19:33
【问题描述】:

我的数据大约有 260 万行,其中包含引号和逗号作为分隔符。 但有时我不想将逗号与变量视为分隔符。

另外,我认为某处有一个公开报价,所以当我简单地阅读.csv 时,我只得到 130 万个观察值。但是当我使用quote=""时,我得到了所需的观察次数,但是列数增加了,因为地址变量最终被逗号分割。

【问题讨论】:

  • IMO,您应该考虑将分隔符更改为“;”并删除文件中的每个双引号“..
  • 使用count.fields 定位不良记录。

标签: r import read.csv


【解决方案1】:

听起来您需要找到并修复您的公开报价。我建议您阅读每一行并计算每行中"s 的数量。如果确实有一个开放引号,你应该在某些特定行中找到奇数个引号

library(stringr)
fileName="read.csv"
con=file(fileName,open="r")
count = 1
while(length(line <- readLines(con, 1)) > 0) {
    s = str_count(line, '"')  # Count number of " in the line
    if (s %% 2 != 0) { # If there is an odd number, means there is an open "
        print(paste("Row", count, "has", s, 'occurrence of "'))
    }
    count = count + 1
} 

【讨论】:

  • 非常感谢。这无疑帮助我找出了哪些行造成了问题。但是它们的数量太多了。我正在尝试使用 csv 拆分器将 csv 拆分为 5-6 个文件,然后打开它们以替换所有引号
  • 我还有一个建议给你,可以考虑修改上面的代码,将数据写入2个不同的文件,一个包含有效行,另一个包含无效行。然后,您可以清理包含无效行的文件并重新组合它们。要逐行编写,请参阅stackoverflow.com/questions/45046184/…
  • 好的,会的,会告诉你们进展如何。非常感谢您的帮助。没想到反应这么快。你是最棒的!
猜你喜欢
  • 2010-10-17
  • 2015-07-13
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多