【问题标题】:How can I declare a thousand separator in read.csv? [duplicate]如何在 read.csv 中声明千位分隔符? [复制]
【发布时间】:2011-01-21 18:56:39
【问题描述】:

我要读取的数据集包含带有和不带有逗号作为千位分隔符的数字:

"Sudan", "15,276,000", "14,098,000", "13,509,000"
"Chad", 209000, 196000, 190000

我正在寻找一种方法来读取这些数据。

感谢任何提示!

【问题讨论】:

    标签: r csv


    【解决方案1】:

    由于问题下方有一个“r”标签,我认为这是一个 R 问题。 在 R 中,您不需要做任何事情来处理带引号的逗号:

    > read.csv('t.csv', header=F)
         V1          V2          V3          V4
    1 Sudan  15,276,000  14,098,000  13,509,000
    2  Chad      209000      196000      190000
    
    # if you want to convert them to numbers:
    > df <- read.csv('t.csv', header=F, stringsAsFactor=F)
    > df$V2 <- as.numeric(gsub(',', '', df$V2))
    

    【讨论】:

    • 如果 read.csv(和根目录下的 read.table)将 'thousands.sep' 参数作为字符以允许(和剥离)数字数据,我会很高兴。现在我认为 gsub() 解决方案是我们所拥有的。
    【解决方案2】:

    您可以使用以下正则表达式删除逗号和任何周围的引号以保留纯 csv 内容

    ,(?=[0-9])|"
    

    然后正常处理

    【讨论】:

      【解决方案3】:

      如何将其作为一个两步过程来完成。 1.用TAB字符替换“,” 2. 按标签拆分。

      我假设这里是 .NET,但示例原则适用于任何语言

      【讨论】:

      • 几个 cmets - 1) “r”标签意味着 Karsten 使用的是“R”语言,而不是 .NET。 2) 用制表符替换所有逗号是行不通的,你最终会以不好的方式拆分数据。
      【解决方案4】:

      查看那组数据,您可以使用“,”(注意多余的空格)作为“,”的分隔符来解析它

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 2018-07-03
        • 2012-04-02
        • 2012-04-22
        • 1970-01-01
        • 2019-03-03
        • 1970-01-01
        • 2011-07-16
        • 2016-01-16
        相关资源
        最近更新 更多