删除逗号,它是 R 中的千位分隔符

Posted

技术标签:

【中文标题】删除逗号,它是 R 中的千位分隔符【英文标题】:Remove comma which is a thousands separator in R 【发布时间】:2019-12-18 15:44:09 【问题描述】:

我需要将一堆 .csv 文件导入 R。我使用以下代码执行此操作:

Dataset <- read.csv(paste0("./CSV/State_level/",file,".csv"),header = F,sep = ";",dec = "," ,  stringsAsFactors = FALSE)

输入是一个 .csv 文件,其中“,”作为小数位的分隔符。不幸的是,有很多条目如下:20,012,054。 这实际上应该是:20012,054 并导致任何一个 NA,但通常整个 df 被导入为字符而不是我想要的数字。

当从左到右查看时,我如何去掉第一个“,”,并且仅当数字在小数点逗号前超过 3 个数字时?

以下是 .csv 文件中数据外观的示例:

data.frame 可能如下所示:

df<-data.frame(a=c(0.5,0.84,12.25,"20,125,25"), b=c("1,111,054",0.57,105.25,0.15))

我用了“。”在这种情况下作为小数分隔符使其成为一个数字,在 .csv 中是一个“,”,但这不是格式数字的问题:123,45。

感谢您的想法和帮助!

【问题讨论】:

【参考方案1】:

我们可以用sub去掉第一个,

df[] <-  lapply(df, function(x) sub(",(?=.*,)", "", x, perl = TRUE))

如果代码中只有一个,,只是为了表明它会留下,

sub(",(?=.*,)", "", c("0,5", "20,125,25"), perl = TRUE)
#[1] "0,5"      "20125,25"

【讨论】:

我认为 OP 有另一个条件:只有在有第二个逗号时才删除初始逗号(所以我们知道它不是十进制逗号)。 @akrun,感谢代码 sn-p。我会尽快检查。

以上是关于删除逗号,它是 R 中的千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章

Python中的千位分隔符[重复]

windows中比特率的千位分隔符

C++中的千位分隔符

如何显示或隐藏数字中的千位分隔符

sql SQL SERVVER中的千位分隔符

如何放置千位分隔符“点”