Convertire un vettore data in giorno Giuliano in R

Ho una colonna di date nel formato: 16giugno10 e vorrei estrarre il giorno giuliano. Ho diversi anni.

Ho provato le funzioni julian e mdy.date e non sembra funzionare.

Provare quanto segue per convertire dal character class (cioè testo) in class POSIXlt e quindi estrarre il giorno di Julian ( yday ):

 tmp <- as.POSIXlt("16Jun10", format = "%d%b%y") tmp$yday # [1] 166 

Per maggiori dettagli sulle impostazioni delle funzioni:

 ?POSIXlt ?DateTimeClasses 

Un'altra opzione è utilizzare una class Date e quindi utilizzare il format per estrarre un giorno julian (notare che questa class definisce julian days tra 1: 366, mentre POSIXlt è 0: 365):

 tmp <- as.Date("16Jun10", format = "%d%b%y") format(tmp, "%j") # [1] "167" 

Allo stesso modo:

 require(lubridate) x = as.Date('2010-06-10') yday(x) [1] 161 

Nota anche, usando lubridate:

 > dmy('16Jun10') [1] "2010-06-16 UTC" 

È ansible utilizzare il pacchetto insol di R che ha una funzione JD(x, inverse=FALSE) che converte POSIXct in Julian Day Number (JDN).

pacchetto insol ha anche JDymd(year,month,day,hour=12,minute=0,sec=0) per le date personalizzate.

Per visualizzare l’intera Julian Date (JD) è necessario impostare le options(digits=16) .

 my.data = read.table(text = " OBS MONTH1 DAY1 YEAR1 1 3 1 2012 2 3 31 2012 3 4 1 2012 4 4 30 2012 5 5 1 2012 6 5 31 2012 7 6 1 2012 8 6 30 2012 9 7 1 2012 10 7 31 2012 ", header = TRUE, stringsAsFactors = FALSE) my.data$MY.DATE1 <- do.call(paste, list(my.data$MONTH1, my.data$DAY1, my.data$YEAR1)) my.data$MY.DATE1 <- as.Date(my.data$MY.DATE1, format=c("%m %d %Y")) my.data$my.julian.date <- as.numeric(format(my.data$MY.DATE1, "%j")) my.data 

Restituisce, che tecnicamente non è corretto poiché le date giuliane non tornano a 1 il primo giorno di ogni gennaio:

http://en.wikipedia.org/wiki/Julian_day

Le date di seguito sono date ordinali:

  OBS MONTH1 DAY1 YEAR1 MY.DATE1 my.julian.date 1 1 3 1 2012 2012-03-01 61 2 2 3 31 2012 2012-03-31 91 3 3 4 1 2012 2012-04-01 92 4 4 4 30 2012 2012-04-30 121 5 5 5 1 2012 2012-05-01 122 6 6 5 31 2012 2012-05-31 152 7 7 6 1 2012 2012-06-01 153 8 8 6 30 2012 2012-06-30 182 9 9 7 1 2012 2012-07-01 183 10 10 7 31 2012 2012-07-31 213