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

在R语言中从字符串提取混合日期并转换为as.Date格式

提取字符向量中的日期并转换为Date格式

问题说明

现有如下字符向量,需要从中提取日期部分并转换为as.Date格式,注意字符串末尾的数字是评论数,不属于日期内容。示例中第一行的日期最终需呈现为09-11-2021格式。

示例数据:

example.data <- c("By Leigh-Ann Butler, Shannon Cobb, Michael R. DonaldsonNov 9, 20213 Comments",
"By Leigh-Ann Butler, Shannon Cobb, Michael R. DonaldsonNov 8, 20212 Comments",
"By Rick AndersonNov 4, 202114 Comments",                                       
"By Victoria Ficarra, Rob JohnsonNov 3, 20215 Comments")

解决方案

方法1:基础R实现

  1. 提取日期字符串:用正则匹配英文月份缩写+日+年的固定格式,捕获目标日期片段:
# 提取日期字符串
date_strings <- regmatches(example.data, regexpr("[A-Z][a-z]{2} \\d{1,2}, \\d{4}", example.data))
  1. 转换为Date对象:指定匹配格式%b %d, %Y(对应Nov 9, 2021这类格式):
date_objects <- as.Date(date_strings, format = "%b %d, %Y")
  1. 调整为日-月-年显示格式(按需执行):
formatted_dates <- format(date_objects, "%d-%m-%Y")

方法2:stringr包简化操作

如果已安装stringr包,可通过链式调用缩短代码:

library(stringr)
# 提取并转换为Date对象
date_objects <- str_extract(example.data, "[A-Z][a-z]{2} \\d{1,2}, \\d{4}") %>%
  as.Date(format = "%b %d, %Y")
# 格式化输出
formatted_dates <- format(date_objects, "%d-%m-%Y")

结果验证

运行代码后,formatted_dates将输出:

[1] "09-11-2021" "08-11-2021" "04-11-2021" "03-11-2021"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:35:14