【发布时间】:2026-01-11 05:50:02
【问题描述】:
我有一个数据框,其中一列表示年份,另一列表示儒略日(1-366、1-365,具体取决于年份)。我想知道如何有效地将 DOY_start 列设置为基于年份的.Date(以考虑闰年)。
我尝试使用 as.Date()、as.POSIXct()、lubridate::as_date()
但我所有的试炼都失败了。下面是一个生成数据的代码示例,它与我的原始数据非常相似。
非常感谢您的建议。
library(tibble)
Year <- 1980:2020
DOY_start <- as.integer(rnorm(length(Year), mean=91.1, sd=9.65))
var <- cbind(Year, DOY_start)
var <- as_tibble(var)
head(var)
#> # A tibble: 6 x 2
#> Year DOY_start
#> <int> <int>
#> 1 1980 98
#> 2 1981 89
#> 3 1982 79
#> 4 1983 97
#> 5 1984 81
#> 6 1985 80
var$DOY_start_date <- as.POSIXct(strptime(var$DOY_start, "%j"))
head(var)
#> # A tibble: 6 x 3
#> Year DOY_start DOY_start_date
#> <int> <int> <dttm>
#> 1 1980 98 2020-04-07 00:00:00
#> 2 1981 89 2020-03-29 00:00:00
#> 3 1982 79 2020-03-19 00:00:00
#> 4 1983 97 2020-04-06 00:00:00
#> 5 1984 81 2020-03-21 00:00:00
#> 6 1985 80 2020-03-20 00:00:00
由reprex package (v0.3.0) 于 2020 年 9 月 18 日创建
【问题讨论】:
-
这不是儒略日,而是“年数”。
标签: r julian-date