2014-11-05 168 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的人,我建議你用不同的角色分隔。