Ich versuche, die folgenden Daten nach Pentad Daten zu unterteilen. Pentad bedeutet nicht überlappender 5-Tage-Durchschnitt. Schaltjahre, 12 Pentad enthält 29. Februar (6 Tage im Durchschnitt statt 5):Subset Daten basierend auf Pentad Daten mit Schaltjahr
Hier ist mein Code:
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)
Problem:
Die dat $ y Linie funktioniert nur für 365 Tage. In einem bestimmten Jahr sollte es nur 73 Pentaden geben. Mein Code oben produziert 74 Pentads, wenn ich die dat $ pentad überprüfe. Das df enthält die Datenrahmen für jede Pentade.
Ich habe folgende zur Überprüfung:
test<-dat[which(dat$pentad == 74),]
Ausgang:
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
Frage:
- Wie kann ich für das Schaltjahr in meinem Code-Konto?
Kann jemand vorschlagen, wie kann ich das tun?
Vielen Dank,
Was ist die Definition von _pentad_ sagen über Schaltjahre? Wird der 29. Februar fallen gelassen? Oder wird Pentad 12, das vom 29. Februar bis zum 1. März reicht, aus 6 statt 5 Tagen bestehen? – Uwe
@UweBlock. Du hast Recht. Für Schaltjahre hat Pentad 12 6 Tage anstelle von 5 Tagen. Pentad bedeutet nicht überlappender Durchschnitt. – ichabod
Nachdem nun die Definition von Pentaden in einem Schaltjahr geklärt wurde, können Sie versuchen, eine Liste der Pentad-Startdaten für ein Jahr zu erhalten, eine zweite Liste erstellen, die die gesamte Zeitspanne Ihrer Daten abdeckt, und) 'auf Ihren Daten. – Uwe