Il titolo ha: come si converte una data POSIX in un giorno dell'anno?Come si converte la data di POSIX in un giorno dell'anno in R?
risposta
Un'alternativa è per formattare l'oggetto "POSIXt"
utilizzando strftime()
:
R> today <- Sys.time()
R> today
[1] "2012-10-19 19:12:04 BST"
R> doy <- strftime(today, format = "%j")
R> doy
[1] "293"
R> as.numeric(doy)
[1] 293
che è preferibile ricordare che il giorno degli anni è a base zero nello standard POSIX.
Come rivela ?POSIXlt
, un suffisso $yday
a una data POSIXlt
(o anche un vettore di tale valore) verrà convertito in giorno dell'anno. Attenzione che POSIX conta 1 gennaio come giorno 0, quindi potresti voler aggiungere 1 al risultato.
Mi ci è voluto molto tempo per trovare questo, quindi ho pensato che avrei ask and answer my own question.
In alternativa, l'eccellente pacchetto lubridate
fornisce la funzione yday
, che è solo un wrapper per il metodo precedente. Definisce convenientemente funzioni simili per altre unità (month
, year
, hour
, ...).
today <- Sys.time()
yday(today)
Parte del motivo per cui mi c'è voluto così tanto tempo è che se 'd' è un oggetto POSIXlt,' str (d) 'non fornisce alcuna indicazione che' d' ha ulteriori attributi. Questo, e che l'operatore '$' lavora in maniera elementale su un vettore di oggetti POSIXlt significa molto di più di una semplice estrazione in corso. Sarei interessato a leggere un po 'di più su questo se qualcuno può consigliare un bel posto da cui iniziare. – Gregor
E, per rispondere al mio commento, 'attributes' è il comando che stavo cercando,' attributes (d) 'fornisce tutti i modi di visualizzare' d'. – Gregor
Heh, anche io stavo lottando con questa domanda. Sembra che tu abbia risposto tu stesso (al contrario di farlo semplicemente senza pubblicarlo qui). Grazie per quello! – Mikko
Questo è il modo in cui lo faccio:
as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160
Funziona bene per' POSIXlt' (come menzionato nella mia risposta), ma non per gli oggetti 'POSIXct'. Ad esempio, 'Sys.time() $ yday' non funziona. – Gregor
mi rendo conto che non è proprio ciò che il poster stava cercando, ma avevo bisogno di convertire POSIX data-volte in un frazionale giorno dell'anno per l'analisi delle serie storiche e ha finito per fare questo:
today <- Sys.time()
doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')
Sembra utile! Hai il mio voto. – Gregor
- 1. Converti frazione di giorno in tempo POSIX in R
- 2. Conversione data in un giorno della settimana in R
- 3. Jackson @JsonFormat imposta la data con un giorno in meno
- 4. Come si converte la cstring in NSString?
- 5. Formato data in giorno, mese giorno, anno
- 6. Arrotondare una data POSIX (POSIXct) con funzionalità di base R
- 7. Come determinare la data un giorno prima di una determinata data in Java?
- 8. Come si converte un oggetto java.sql.Date in un GregorianCalendar?
- 9. converte timestamp in data corrente in android
- 10. Numero di osservazioni di giorno, in R
- 11. Come si converte un numero di data seriale Excel in un datetime .NET?
- 12. Come si converte un colore in un pennello in XAML?
- 13. Come si converte Double [] in double []?
- 14. Come si converte un numero in un INTERVALLO di minuti?
- 15. Come formattare la data con il giorno in Android?
- 16. Come si converte NSString in NSData?
- 17. Come si converte un UIColor in una stringa esadecimale?
- 18. Come si converte un 'Fixnum' in una data in Rails 3.1.3?
- 19. Come si converte la funzione delegata R <T,R> (T t) in Func <T,R>?
- 20. Come aggiungere giorno fino alla data in Linq a SQL
- 21. SQL: Come produrre la data successiva data mese e giorno
- 22. Ottenere la data successiva dal giorno della settimana in JavaScript
- 23. Come si converte un tipo induttivo in un tipo coinduttivo in modo efficiente (senza ricorsione)?
- 24. Come si converte un valore JSONB in booleano in Postgresql?
- 25. Come si converte un InputStream in una stringa in Java?
- 26. Come si converte un IntStream Java 8 in un elenco?
- 27. Come si converte un CString in doppio in C++?
- 28. Come si converte una stringa in un char * in C++?
- 29. Come si converte un oggetto datetime.date in datetime.datetime in python?
- 30. Come si converte un nome di funzione in una stringa
Ho appena eseguito il mio primo set di dati con una colonna 'POSIXct'. Sembrava il momento di contrassegnare il tuo come la risposta accettata. – Gregor
@Gavin, è anche possibile convertire una data in giorni da un dato specificato, ad esempio numero di giorni dal 1 ° marzo 2015? Posso anche postare una nuova domanda ... –
@ B.Davis Puoi fare qualcosa come 'as.numeric (Sys.Date() - as.Date ('2015-03-01', format = '% Y- % m-% d ')) ' – Henry