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

如何使用lubridate将日期时间数组中的年份修改为当前年份或指定年份2021?

用lubridate和dplyr修改日期时间的年份组件

针对你提出的两个日期处理需求,我结合你提供的测试数据,给出具体的实现方案:

需求1:把日期时间数组的年份替换为当前年份

我们可以借助lubridate的year()函数来读取和修改年份,搭配dplyr的mutate()更新数据框列。当前年份用year(Sys.Date())就能获取到:

library(lubridate)
library(dplyr)

# 你的测试数据
time <- ymd_hms(c("2018-01-05 12:00:15", "2018-01-01 02:00:15", "2018-02-25 12:00:15", 
                  "2018-04-15 12:00:15", "2020-10-15 12:00:15", "2019-10-20 12:00:15", 
                  "2019-11-15 12:01:15", "2018-11-02 11:00:15", "2018-07-09 02:00:15", 
                  "2020-10-02 11:00:15", "2020-01-29 12:00:15", "2019-03-15 12:00:15"))
tbl <- tibble(time)

# 修改为当前年份
tbl_current <- tbl %>%
  mutate(time = {year(time) <- year(Sys.Date()); time})

# 查看处理后的结果
print(tbl_current)

这里要注意,在mutate()里直接赋值需要用大括号包裹,确保赋值操作完成后返回修改后的time列。

需求2:将所有日期时间的年份统一改为2021

这个需求更简单,直接把年份固定为2021即可:

# 修改年份为2021
tbl_2021 <- tbl %>%
  mutate(time = {year(time) <- 2021; time})

# 查看结果
print(tbl_2021)

这样处理后,所有日期的月、日、时分秒都保持原样,只有年份被替换成2021。

小提示

  • lubridate的year()函数是双向操作:year(x)提取年份,year(x) <- new_year修改年份,非常适合这类需求。
  • 如果你的原始数据不是标准的日期时间类型,一定要先用ymd_hms()(或对应格式的ymd()、mdy()等函数)转换成lubridate支持的日期时间对象,不然year()函数无法正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:37:32