2014-11-05 85 views
0

我有一个很大的CSV文件(170k行),我将它导入到R中。文件中的每个条目都以逗号分隔 - 但是,在某些列(特别是那些一组网址粘在一起),字符串中有逗号。下面的例子:将CSV导入R时的逗号逗号

Will Smith,25/09/68,null,male,08/10/14,450109,TRUE,http://commons.wikimedia.org/wiki/Special:FilePath/Will_Smith_2011,_2.jpg?width=300http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Will_Smith_2011,_2.jpg/200px-Will_Smith_2011,_2.jpghttp:..... 

添加的逗号具有连锁效应 - 它使R(和Excel)认为它是一个单独的列,它然后用其它列和破坏格式化伸出。鉴于受影响数据中大约有10%左右,是否有一种快速解决此问题的方法?

+0

如果在数据逗号,它应该被保存为制表符分隔文本。 – 2014-11-05 18:50:46

+0

如果你不能重新生成文件,但逗号在最后,那么假设n个字段只是用一些没有出现在文件中的字符替换第一个n-1逗号。这里我们将使用分号:'L < - readLines(“myfile.csv”);对于(i in 2:n)L < - sub(“,”,“;”,L); read.table(text = L,header = TRUE,sep =“;”)' – 2014-11-05 19:04:36

回答

0

如果这有限的例子提出的规则是删除下划线之前出现的逗号,那么这个成功:

gsub("[,][_]", "_", s) 
0

没有什么规则可以忽略逗号,否。

如果你有一些一致的规则,然后使用str_replace_all与正则表达式来查找例外。

如果你是制作csv的人,我建议你用不同的角色分隔。