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

使用Lubridate包在R中为时序数据合并年月列

解决方法

1. 生成标准日期列(优先用lubridate)

直接用lubridate::make_date()函数,把Year和Month字段转换成标准的Date类型,一步到位生成每月第一天的日期(适配月度时序数据),再整理成仅含date和value的数据集:

df_processed <- df %>%
  mutate(date = make_date(Year, Month),  # 生成标准日期格式
         value = Value) %>%  # 重命名Value列为value(按需调整)
  select(date, value)  # 保留目标列

2. 转换为ts时序对象

ts对象不需要依赖date列,仅需数值序列、起始时间和频率即可生成。我们可以从处理好的数据集中提取value列,结合数据的起始年月生成ts对象:

# 获取数据的起始年月
start_point <- c(min(df$Year), min(df$Month[df$Year == min(df$Year)]))

# 生成月度时序对象
ts_obj <- ts(df_processed$value, start = start_point, frequency = 12)

关于你尝试的unite方法

你之前用unite得到的是字符串格式的年月组合,需要额外转换才能成为标准日期类型,不如make_date()简洁。如果一定要用unite,可补全转换步骤:

df_unite <- df %>%
  unite(date_str, Year, Month, sep = "-") %>%
  mutate(date = ymd(paste0(date_str, "-01"))) %>%  # 补全日期为当月第一天,转成Date类型
  select(date, value = Value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:55:26