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

R如何将DataFrame中dd/mm/yyyy或dd/m/yyyy格式日期列拆分为日月年列

错误原因

原代码返回全NA是因为正则表达式和实际日期格式完全不匹配:

  • 正则里写的分隔符是, (逗号加空格),但目标日期是用/分隔的
  • 最后一组的匹配规则[^)]+是匹配非右括号的字符,目标日期里不存在右括号,没有任何一条数据能匹配规则,所以返回全NA
修正代码

有两种简单的实现方案,都可以得到目标结果:

方案1:调整extract函数的正则

把正则替换为匹配/分隔的规则,同时添加convert=TRUE参数自动将拆分后的内容转为数值类型:

library(dplyr)
library(tidyr)

df <- data.frame(Date = c("10/1/2001", "15/01/2010", "15/2/2010", "20/02/2010", "25/3/2010", "31/03/2010"))

df %>% 
  extract(Date, c("Day", "Month", "Year"), "([^/]+)/([^/]+)/(.+)", convert = TRUE)

方案2:使用separate函数拆分

因为是固定分隔符的拆分场景,用separate更简洁,直接指定分隔符为/即可:

df %>% 
  separate(Date, into = c("Day", "Month", "Year"), sep = "/", convert = TRUE)
输出说明

你给出的预期输出里第一行Year为2010是笔误,原输入第一条数据为10/1/2001,运行代码后第一行Year会正确返回2001,其余数据和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:45:04