基于具有闰年的五元日期的子集数据

Subset data based on pentad dates with leap year

我正在尝试按五元日期对以下数据进行子集化。 Pentad 表示不重叠的 5 天平均值。对于闰年,Pentad 12 包括 2 月 29 日(平均 6 天而不是 5 天):

Link to Data

Link to pentad dates

这是我的代码:

library(stringr)
dat      <- read.csv("tc_filt_1981-2007.csv",header = T,sep = ",")

dat$Date = paste(dat$Year, str_pad(dat$Month,2,'left','0'),    str_pad(dat$Day,2,'left','0'), sep='-')
dat$yday = as.POSIXlt(dat$Date)$yday + 1
dat$pentad = ceiling(dat$yday/5)
df<-split(dat, dat$pentad)

问题:

dat$y 行仅适用于 365 天。在给定的一年中,应该只有 73 个五行。当我检查 dat$pentad 时,我上面的代码产生了 74 个五元组。 df 包含每个 pentad 的数据帧。

我做了以下检查:

test<-dat[which(dat$pentad == 74),]

输出:

SN     CY Year Month Day  Hour  Lat Lon   Cat   Date yday pentad
200034 34 2000    12  31    0 12.7 128.2  TS 2000-12-31  366     74
200034 34 2000    12  31    6 13.3 128.8  TS 2000-12-31  366     74
200034 34 2000    12  31   12 13.9 129.7  TS 2000-12-31  366     74
200034 34 2000    12  31   18 14.4 130.6  TS 2000-12-31  366     74

问题:

  1. 如何在我的代码中计算闰年?

任何人都可以建议我该怎么做吗?

非常感谢,

微调:

library(lubridate)
dat$pentad = ceiling( (dat$yday - leap_year(dat$Year)*(dat$yday > 59)) / 5 )