【问题标题】:How to clean CSV having double quote with-in double quote using R如何使用R清理具有双引号内双引号的CSV
【发布时间】:2017-07-04 13:50:50
【问题描述】:

下面是我正在使用 R 读取的 csv 行。但由于我在数据集中有逗号和反逗号,所以没有在它们的列中分隔所有值。

数据:"18452","xx, yy & zz "Charles 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.

【问题讨论】:

    标签: r csv


    【解决方案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"'
    

    【讨论】:

    • 替换 , 用 |.. 它不会在读取时创建另一个 col,因为 col b 也有逗号
    • 代码不会用管道替换逗号。它用管道替换双引号,后跟逗号,后跟双引号。字段中的逗号不会被替换,如答案中所示的示例所示。 V2 有一个逗号,它没有被替换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2011-04-19
    • 2014-04-07
    相关资源
    最近更新 更多