2017-07-04 379 views
1

下面是我使用R讀取的csv行。但是由於我在逗號和數據集中引入了逗號,因此沒有在其列中分隔所有值。如何使用R清除雙引號雙引號的CSV

數據: 「18452」, 「XX,YY & ZZ 」查爾斯·W「,」 XXXX」

Desire Data Frame : 
     Col A -> 18452 
     Col B -> xx, yy & zz "Charles W 
     Col C -> "xxxx" 

OR 
    Col A -> 18452 
    Col B -> xx, yy & zz Charles W 
    Col C -> "xxxx" 

Any one will work. 

回答

1

假設你的意思xxxx,而不是"xxxx"作爲最後一列輸出替換","每次出現(即雙引號,逗號,雙引號的每次出現)與|和在每一行的開始和結束時去除任何雙引號最後,讀取使用read.table

read.table(text = gsub('^"|"$', "", gsub('","', '|', Data)), sep = "|", quote = "") 

給予:

 V1      V2 V3 
1 18452 xx, yy & zz "Charles W xxxx 

的上述一種變化是將它表示爲一個magrittr管道:

library(magrittr) 

Data %>% 
    gsub(pattern = '^"|"$', replacement = "") %>% 
    gsub(pattern = '","', replacement = '|') %>% 
    read.table(text = ., sep = "|", quote = "") 

注:在重現的形式的輸入是:

Data <- '"18452","xx, yy & zz "Charles W","xxxx"' 
+0

替換,用| ..將不會創建另一個列,而閱讀作爲列b也有逗號 – srajsharma

+0

該代碼不會用管道替換逗號。它用一個雙引號替換一個雙引號,然後用一個雙引號替換一個逗號。字段中的逗號將不會被替換,如答案中所示的示例所示。 V2有一個逗號,並沒有被替換。 –