删除逗号,它是 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 中的千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章