ho qualche dubbio circa gli anni bisestili, come posso essere sicuro che utilizzando una formula del genereCome tenere conto degli anni bisestili?
add.years= function(x,y){
if(!isTRUE(all.equal(y,round(y)))) stop("Argument \"y\" must be an integer.\n")
x <- as.POSIXlt(x)
x$year <- x$year+y
as.Date(x)
}
si prenderà in considerazione anni bisestili, quando si aggiungono per esempio 100 anni per il mio set di dati di osservazione? Come posso controllarlo?
Ho un set di dati di serie temporali con 50 anni di osservazioni:
date obs
1995-01-01 1.0
1995-01-02 2.0
1995-01-03 2.5
...
2045-12-30 0.2
2045-12-31 0.1
set di dati + 100 anni
date obs
2095-01-01 1.0
2095-01-02 2.0
2095-01-03 2.5
...
2145-12-30 0.2
2145-12-31 0.1
Dopo un controllo di base, ho notato che il numero di righe è il lo stesso sia per l'originale che per 100 anni dopo il set di dati. Non sono sicuro se quello che era prima del 29 febbraio in un anno bisestile sarà ora il valore di obs per il 1 ° marzo in un anno bisestile, ecc.
Posso controllare gli anni bisestili usando dalla libreria di cronologia la funzione leap.year, tuttavia vorrei sapere se esiste un modo più semplice per eseguire questa operazione, per assicurarsi che le righe con giorni di passata del 29 febbraio che non esistono 100 anni dopo verranno eliminate e nuovi giorni del 29 febbraio sono aggiunti con valori NA.
La miscelazione dei formati 'POSIXlt' e' Date' termina solo in oscuri bug e lacrime. –
Confermo! Meglio passare un po 'di tempo a ripulire il mio codice. Grazie! –