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

如何从R语言的短格式日期字符串中提取四位完整年份?

解决R语言中提取日期字符串的四位年份问题

你之前用as.Date()转换失败,核心原因是未指定匹配日期字符串的格式参数。你的日期字符串格式为日-月份英文缩写-两位年份,对应的格式符是%d-%b-%y,各部分含义:

  • %d:两位数字表示的日期
  • %b:英文月份缩写(如Feb、Jan)
  • %y:两位数字表示的年份

方法一:基础R原生实现

  1. 先将字符串转换为标准日期类型:
v1 <- c("01-Feb-09", "01-Jan-10", "03-Mar-11")
date_v1 <- as.Date(v1, format = "%d-%b-%y")
  1. 提取四位年份,使用format()函数指定%Y(四位年份格式符):
year_v1 <- format(date_v1, "%Y")
# 输出结果:"2009" "2010" "2011"

方法二:用lubridate包简化操作

lubridate包提供了更直观的日期处理函数,无需手动编写格式符:

  1. 安装并加载包:
install.packages("lubridate")
library(lubridate)
  1. 用dmy()函数直接按日-月-年顺序转换字符串为日期:
date_v1 <- dmy(v1)
  1. 用year()函数提取四位年份:
year_v1 <- year(date_v1)
# 输出结果:2009 2010 2011(数值型,如需字符型可转成as.character(year_v1))

补充说明

关于两位年份的世纪映射:R默认规则是00-69对应2000-2069,70-99对应1970-1999。如果需要自定义世纪逻辑,可通过字符串截取后手动拼接世纪前缀,比如:

# 直接截取最后两位年份,拼接"20"前缀
year_v1 <- paste0("20", substr(v1, nchar(v1)-1, nchar(v1)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:52:03