如何在R语言中为数据补1和0至12位宽度?
解决方案
方法一:基础R原生函数实现
先将数值列转换为字符类型,再用sprintf函数完成格式化:
# 读取原始数据 df <- read.table(text = "col 921103 142106 12095769 11102 32456", header = TRUE) # 转换为字符列,避免数值处理丢失格式 df$col <- as.character(df$col) # 格式化:前导1 + 补0至11位的原内容,总长度12位 df$col <- sprintf("1%011s", df$col)
方法二:tidyverse风格(stringr包)
如果习惯使用tidyverse工具链,可以用stringr包的str_pad函数:
library(stringr) # 读取原始数据 df <- read.table(text = "col 921103 142106 12095769 11102 32456", header = TRUE) df$col <- df$col %>% as.character() %>% str_pad(width = 11, side = "left", pad = "0") %>% # 补0到11位 paste0("1", .) # 拼接前导1
两种方法最终都会得到期望的12位格式结果:
> df col 1 100000921103 2 100000142106 3 100012095769 4 100000011102 5 100000032456
内容的提问来源于stack exchange,提问作者Roq
相关产品推荐
相关产品推荐

