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

在R语言中将YEAR与DOY列转换为dd/mm/yyyy格式的日期列

在R中将年份与年积日转换为指定格式的日期列

首先构造示例数据框:

df <- data.frame(
  YEAR = c(1991, 1991, 1991, 1991, 1991, 1991),
  DOY = c(1, 2, 3, 300, 301, 302),
  T2M = c(25.69, 23.12, 21.65, 21.49, 21.49, 21.49),
  TS = c(25.76, 21.46, 22.56, 22.75, 22.75, 22.75)
)

方法1:基础R实现

利用as.Date()函数,以当年1月1日为原点计算年积日对应的具体日期,再用format()转为dd/mm/yyyy格式:

# 生成DATE列并格式化
df$DATE <- format(as.Date(df$DOY - 1, origin = paste0(df$YEAR, "-01-01")), 
                  format = "%d/%m/%Y")

# 保留目标列
df_final <- df[, c("DATE", "T2M", "TS")]

方法2:使用lubridate包(tidyverse生态)

lubridate提供更直观的日期处理函数,代码更简洁:

library(lubridate)

# 生成DATE列并格式化
df$DATE <- format(make_date(df$YEAR) + days(df$DOY - 1), 
                  format = "%d/%m/%Y")

# 整理列顺序
df_final <- df %>% select(DATE, T2M, TS)

转换后的数据框如下:

DATET2MTS
01/01/199125.6925.76
02/01/199123.1221.46
03/01/199121.6522.56
26/10/199121.4922.75
27/10/199121.4922.75
28/10/199121.4922.75

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:05