如何解决朱利安日期至今矢量
我有一个数据框,其中一列用于年份,另一列在儒略日(1-366,1-365,取决于年份)。我想知道如何有效地将DOY_start列设置为基于年份的日期(以计算leap年)。
我尝试使用as.Date(),as.POSIXct(),lubridate :: as_date()
但是我所有的尝试都失败了。下面是一个示例代码,该示例的生成数据与我的原始数据非常相似。
非常感谢您提供任何建议。
[warn] Ignored unkNown option { extends: "@wordpress/prettier-config" }.
由all()
(v0.3.0)于2020-09-18创建
解决方法
这是一个有趣的难题。我们知道as.POSIXlt
包含年份中的日期,并且某些日期库将其转换为日期,但是我无法立即找到处理它的解析器。
然后,仅需日期即可。我们总是得到1月1日的日期。然后,所需的日期就是1月1日加上“一年中的天数”减去1。
码yearyearday <- function(yr,yd) {
base <- as.Date(paste0(yr,"-01-01")) # take Jan 1 of year
day <- base + yd - 1
}
set.seed(42) # make it reproducible
sample <- data.frame(year=1980:2020,doy=as.integer(rnorm(41,mean=91.1,sd=9.65)))
sample$date <- yearyearday(sample$year,sample$doy)
head(sample)
输出量
R> yearyearday <- function(yr,yd) {
+ base <- as.Date(paste0(yr,"-01-01")) # take Jan 1 of year
+ day <- base + yd - 1
+ }
R>
R> set.seed(42) # make it reproducible
R> sample <- data.frame(year=1980:2020,+ doy=as.integer(rnorm(41,sd=9.65)))
R>
R> sample$date <- yearyearday(sample$year,sample$doy)
R>
R> head(sample)
year doy date
1 1980 104 1980-04-13
2 1981 85 1981-03-26
3 1982 94 1982-04-04
4 1983 97 1983-04-07
5 1984 95 1984-04-04
6 1985 90 1985-03-31
R>
与日期计算一样,除基数R外,什么都不需要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。