Я пытаюсь подобрать следующие данные по датам пентада. Pentad означает не перекрывающийся 5-дневный средний. Для високосных лет ПЕНТАДА 12 включает в себя 29 февраля (6 дней в среднем вместо 5):Данные подмножества на основе дат пентада с високосным годом
Вот мой код:
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 пентада. Мой код выше дает 74 pentads, когда я проверяю dat $ pentad. Df содержит кадры данных для каждого пентада.
я сделал следующее для проверки:
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
Вопрос:
- Как объяснить я для високосного года в моем коде?
Может ли кто-нибудь предложить, как я могу это сделать?
Большое спасибо,
Что определение _pentad_ сказать о високосных годах? Выйдет ли 29 февраля? Или Pentad 12, который охватывает 29 февраля по 01 марта, состоит из 6 дней вместо 5? – Uwe
@UweBlock. Ты прав. Для високосных лет Pentad 12 имеет 6 дней вместо обычных 5 дней. Пентад означает непересекающееся среднее. – ichabod
Теперь, когда определение пятен в високосный год было выяснено, вы можете попытаться получить список дат начала пентада в течение одного года, создать второй список, который охватывает полный временной интервал ваших данных, и использовать 'cut () 'на ваши данные. – Uwe