将DataFrame导出为CSV时如何保留数字左侧的前导零?
保留导出CSV时的前导零(保持字符类型)
方法1:用基础R的write.table替代write.csv
write.csv是write.table的封装,默认会把带前导零的字符型数字误判为数值,导致前导零丢失。直接用write.table并指定参数,就能强制保留字符格式:
write.table(df, "df.csv", sep = ",", row.names = FALSE, col.names = TRUE, quote = TRUE)
其中quote = TRUE会给字符型字段加上引号,不管用Excel还是文本编辑器打开,都会识别为文本格式,前导零不会消失。
方法2:用readr包的write_csv函数
tidyverse系列的readr包导出CSV时,会默认保留字符类型的原始格式,不用额外设置:
先安装并加载包:
install.packages("readr") library(readr)
再执行导出:
write_csv(df, "df.csv")
这种方式导出的文件,x列的前导零会完整保留,无需担心格式被篡改。
额外提醒
- 先确认
df$x确实是字符类型,用class(df$x)检查,要是因子类型,先转成字符:df$x <- as.character(df$x)再导出。 - 如果用Excel直接打开CSV仍出现前导零丢失,可在Excel导入CSV时,手动指定该列为文本格式,或者用方法1的带引号导出,Excel会自动识别为文本。
内容的提问来源于stack exchange,提问作者An116
相关产品推荐
相关产品推荐

