【问题标题】:R - Poorly Formatted Data - Mismatched Quotes, CSV FileR - 格式错误的数据 - 不匹配的报价,CSV 文件
【发布时间】:2016-03-29 15:06:17
【问题描述】:

我的 CSV 文件存在一些问题。

--不匹配的引号

--那些不匹配的引号内的逗号。

这让读取数据变得像噩梦一样。

我读过 reading badly formed csv in R - mismatched quotes

在使用中读取我的文件

rawData = read.csv(curFile, stringsAsFactors=FALSE, header=TRUE, quote="")

这里建议:R Programming: "More Columns than Column Names"

我认为这是因为引号不匹配,但使用 read.csv(quote="") 仍然会给我这个错误。删除 quote="" 允许我读取文件(列数不超过列名错误),但它仍然读取不正确。

"@realdonaldtrump","870440000","870442502","Louis  Tonelli","L00byLou26","364","292","",0,0,"Wed Mar 23 03:03:18 +0000 2016","RT @realDonaldTrump: Incompetent Hillary, despite the horrible attack in Brussels today, wants borders to be weak and open-and let the Musl&","7.1247e+17","712474777378820097","<a href=""http://twitter.com/download/iphone"" rel=""nofollow"">Twitter for iPhone</a>",NA,NA,NA,NA,NA,"7.1247e+17","712473816614772736","Wed Mar 23 02:59:29 +0000 2016","Donald J. Trump","realDonaldTrump","New York, NY","7259400","41","<a href=""http://twitter.com/download/android"" rel=""nofollow"">Twitter for Android</a>" 
Phone</a>"
"@realdonaldtrump","4831200000","4831194209","Chris Mattingly","_chrismattingly","605","194","Missouri, USA",0,0,"Wed Mar 23 03:03:18 +0000 2016","@realDonaldTrump &lt;- Favorite buffoonish reply: ""Be careful, or [insert stock threat]"". How's the ""libel"" suit going? https://twitter.com","7.1247e+17","712474777064181761","<a href=""http://twitter.com/#!/download/ipad"" rel=""nofollow"">Twitter for iPad</a>",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA
"@realdonaldtrump","4799600000","4799556991","Leann Rehm      Lawrence","rehm_leann","101","295","",0,0,"Tue Mar 22 21:24:15 +0000 2016","RT     @TrumpDynastyUSA: KINDRED SPIRITSBrought to TEARS.
LOVE &amp; HONOR the ""Apple of G-D's EYE!""
Deuteronomy 32:9-10
@ElianaBenador @realDona&","7.1239e+17","712389451679342593","<a     href=""http://twitter.com/download/android"" rel=""nofollow"">Twitter for     Android</a>",NA,NA,NA,NA,NA,"7.1238e+17","712384968836718593","Tue Mar 22     21:06:26 +0000 2016","Lionhearted1","TrumpDynastyUSA","United     States","5153","5140","<a href=""http://twitter.com"" rel=""nofollow"">Twitter     Web Client</a>"

由于我无法控制的原因,这就是数据在文件中的显示方式。

我应该在这里“阅读”的是 3 行/观察。

以“@realdonaldtrump”开头的每一行都是一个新的观察结果。

如果有任何东西落在它下面,它应该是它上面观察的一部分,但是有嵌入的\n或\r。不过,这无关紧要,因为它是以逗号分隔的。

但是,当逗号介于两者之间时,这确实会导致问题。

第“2”行很容易看到不匹配的引号问题

【问题讨论】:

  • 一次性数据集,还是您可能一遍又一遍地收到格式错误的数据?
  • 另外,您是否尝试过将字符串按"," 拆分(然后删除第一个和最后一个"
  • 不,我会试一试!而且它可能会再次发生,我有大约 2000 个文件,这从一开始就发生了。
  • 如果它们都以相同的方式错误格式化,那么我将使用一些简单的 perl 脚本预处理数据(或参见 Mekki 的回答以了解使用 fread

标签: regex r csv


【解决方案1】:

试试package data.table'sfread(See page 31 of help file)。它会自动进行多行比较,以尝试以您描述的方式识别不匹配的引号和逗号。它并不完美,但它往往比read.csv 好得多。

它还支持仅在某些行范围内读取,因此通过一些试验和错误,如果您可以识别顽皮的行,您可以使用初始 fread 跳过那些行,然后单独处理它们,假设没有'太多了。

在阅读前使用PERLPHP 对您的数据进行预处理以识别和纠正不匹配的引号,这可能是您使用R 的最佳选择。

【讨论】:

    猜你喜欢
    • 2013-03-27
    • 2014-02-12
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多