如何在read.csv中声明千位分隔符?

13

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

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

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

任何提示都会受到赞赏!

4个回答

20

由于问题下有一个“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))

8
如果read.csv(以及根目录下的read.table)可以接受一个'thousands.sep'参数作为字符,以允许在数字数据中使用并去除分隔符,那将是很好的。目前,我认为gsub()解决方案是我们唯一拥有的选择。 - Ken Williams

1

看着那组数据,你可以使用", "(注意多余的空格)作为分隔符,而不是","来解析它。


0
您可以使用以下正则表达式来删除逗号和任何周围的引号,以留下纯粹的 CSV 内容。
,(?=[0-9])|"

然后像平常一样处理它


-4
怎么用两步完成呢? 1. 用TAB字符替换掉"," 2. 根据TAB字符分离。
我这里假设是.NET,但是这个原则在任何语言中都适用。

一些注释 - 1)“r”标签表示Karsten正在使用“R”语言,而不是.NET。2)用制表符替换所有逗号是行不通的,这样会导致数据分割错误。 - Ken Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接