You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame列的文本间插入字符并补零格式化?

处理DataFrame文本插入字符并格式化的解决方案

问题场景

原始DataFrame定义如下:

df = data.frame(Clock = c("78", "89", "910", "1011"))

原始数据:

Clock
78
89
910
1011

需要将Clock列格式化为两位一组的补零形式,最终期望结果:

Clock
0708
0809
0910
1011

解决方案

方法一:基于字符串长度的条件处理

通过判断每个字符串的长度,拆分后补零拼接,逻辑直观易懂:

df$Clock <- sapply(df$Clock, function(x) {
  char_len <- nchar(x)
  if (char_len == 2) {
    # 拆分单个数字,补零后拼接
    sprintf("%02d%02d", as.numeric(substr(x, 1, 1)), as.numeric(substr(x, 2, 2)))
  } else if (char_len == 3) {
    # 拆分为1位和2位,补零后拼接
    sprintf("%02d%02d", as.numeric(substr(x, 1, 1)), as.numeric(substr(x, 2, 3)))
  } else {
    # 4位长度直接保留
    x
  }
})

方法二:正则表达式分组处理

利用正则捕获分组,一次性匹配不同长度的字符串,再统一补零拼接:

library(stringr)

df$Clock <- str_replace(df$Clock,
                        "^(\\d{1,2})(\\d{2})$",
                        function(match) {
                          sprintf("%02d%02d", as.numeric(match[2]), as.numeric(match[3]))
                        })

验证结果

执行上述代码后,输出处理后的DataFrame:

print(df)
#   Clock
# 1 0708
# 2 0809
# 3 0910
# 4 1011

内容的提问来源于stack exchange,提问作者Fadhil Dzikri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:07:57