0

次のデータをペンタッド日付でサブセット化しようとしています。Pentad は、重複しない 5 日間の平均を意味します。うるう年の場合、Pentad 12 には 2 月 29 日が含まれます (平均 5 日ではなく 6 日)。

データへのリンク

ペンタッド日付へのリンク

これが私のコードです:

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)

問題:

date$y行は365 日間のみ機能します。ある年には、ペンタドは 73 個しかないはずです。上記のコードは、dat$pentadをチェックすると 74 個の pentad を生成します。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. コードでうるう年をどのように説明するのですか?

誰でもこれを行う方法を提案できますか?

どうもありがとう、

4

1 に答える 1

1

微調整:

library(lubridate)
dat$pentad = ceiling( (dat$yday - leap_year(dat$Year)*(dat$yday > 59)) / 5 )
于 2016-12-19T09:35:58.523 に答える