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

在R中使用mutate与正则表达式对日期列进行条件格式化

错误原因

  • 括号语法错误:你的ifelse函数的判断条件括号提前闭合,导致后续参数没有被正确传入ifelse,触发缺失类报错
  • 匹配逻辑错误:[:upper:]是正则表达式的字符类,不能直接用==和单个字符做等值判断,需要搭配正则匹配函数使用

修正后代码

library(tinyverse)
library(lubridate)

df <- df %>%
  mutate(
    # 判断首字符为大写字母则补01,否则保留原日期字符串
    new_date_str = ifelse(str_detect(Date, "^[:upper:]"), paste("01", Date, sep = " "), Date),
    # 转换为标准日期格式
    new_date = dmy(new_date_str)
  )

更简便的优化方案

无需手动判断字符串格式,利用lubridate的解析规则和coalesce函数可以一步完成转换,容错性更高:

df <- df %>%
  mutate(
    new_date = coalesce(
      dmy(Date), # 优先解析已带日的完整日期
      dmy(paste0("01 ", Date)) # 解析失败的自动补01后再解析
    )
  )

内容的提问来源于stack exchange,提问作者Thomas Liou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:36:04