【发布时间】:2020-01-17 10:08:00
【问题描述】:
我有一年的 365 个每日值。现在我想复制 2014 年到 2018 年的这些值。如果有闰年,则将 2 月 29 日的平均值设为 2 月 28 日和 3 月 1 日的平均值。
如何自动执行此操作?这就是我到目前为止所拥有的。非常感谢您!
library(xts)
set.seed(1)
myday <- seq(1, 365, by = 1)
myvalue <- rnorm(length(myday))
mydata <- data.frame(myday, myvalue)
head(mydata)
#> myday myvalue
#> 1 1 -0.6264538
#> 2 2 0.1836433
#> 3 3 -0.8356286
#> 4 4 1.5952808
#> 5 5 0.3295078
#> 6 6 -0.8204684
myyear <- seq(2014, 2018, by = 1)
myyear
#> [1] 2014 2015 2016 2017 2018
leapyearvalue <- 0.5 * (mydata$myvalue[mydata$myday == 28] + mydata$myvalue[mydata$myday == 29])
leapyearvalue
#> [1] -0.9744512
repdata <- coredata(mydata)[rep(seq(nrow(mydata)), length(myyear)), ]
head(repdata)
#> myday myvalue
#> 1 1 -0.6264538
#> 2 2 0.1836433
#> 3 3 -0.8356286
#> 4 4 1.5952808
#> 5 5 0.3295078
#> 6 6 -0.8204684
【问题讨论】:
标签: r time-series xts replicate leap-year