R语言读取含千位分隔符(点号)的CSV文件简便方案咨询
更简便的R读取千位分隔符为点号的CSV方法
我这里有两个超省心的方案,比常规方法更高效,你可以根据场景选:
方案1:用readr包(推荐,适配复杂数据)
readr属于tidyverse工具集,处理这类格式问题天生顺手,不用事后做字符串替换,读取时直接搞定:
如果还没装包,先完成安装:
install.packages("readr") library(readr)
然后直接读取文件,通过locale参数明确指定分隔符规则:
# 读取你的测试文件 df <- read_csv("number.csv", col_names = FALSE, locale = locale(grouping_mark = ".", decimal_mark = ","))
简单解释下参数:
grouping_mark = ".":告诉R数字里的点是千位分隔符decimal_mark = ",":设置小数分隔符(如果你的文件里用逗号表示小数就用这个,要是没有小数,这个参数不影响测试结果)
运行后你会看到df$X1的值是123456,完全符合预期。
方案2:基础R原生方法(无需装包,适配简单场景)
如果不想加载额外包,用基础R也能一步解决:先把列读成字符格式,替换掉点号后转成数值即可:
# 先以字符格式读取数据 df <- read.csv("number.csv", header = FALSE, stringsAsFactors = FALSE, colClasses = "character") # 替换点号并转换为数值 df$V1 <- as.numeric(gsub("\\.", "", df$V1))
这个方法代码简洁,没有依赖,处理你这种单一列的测试数据特别高效。
测试验证
用你的测试代码生成文件后,不管用上面哪种方法,最终得到的数值都是123456,完美解决了默认识别错误的问题。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

