在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)
转换后的数据框如下:
| DATE | T2M | TS |
|---|---|---|
| 01/01/1991 | 25.69 | 25.76 |
| 02/01/1991 | 23.12 | 21.46 |
| 03/01/1991 | 21.65 | 22.56 |
| 26/10/1991 | 21.49 | 22.75 |
| 27/10/1991 | 21.49 | 22.75 |
| 28/10/1991 | 21.49 | 22.75 |
内容的提问来源于stack exchange,提问作者Muhammad Ihsan
相关产品推荐
相关产品推荐

