sto ottenendo un risultato che non capisco in R.Perché l'analisi di "% Y-% m" viene eseguita con l'intervallo in R dando un risultato NA, ma "% Y-% m-% d" funziona?
Se io uso strptime
con un anno e il giorno formattato% Y-% m (come "2009-12"), ottengo un risultato NA. Ma se aggiungo un giorno, come "2009-12-01", e cambio di conseguenza la stringa di formato, ottengo un risultato. Esempio:
> strptime("2009-12",format="%Y-%m")
[1] NA
> strptime("2009-12-03",format="%Y-%m-%d")
[1] "2009-12-03"
Perché è quello?
Update: La cosa mi incuriosisce è il motivo per cui strptime non analizza un anno e un mese, e la ragione sembra strano che non sarebbe farlo è perché fa analizzare un anno solo, o un anno-e-un-giorno:
> strptime("2009",format="%Y") # year only. Works. Uses current month and day as defaults.
[1] "2009-12-02"
> strptime("2009-03",format="%Y-%d") # year and day. Works. Uses current month as default.
[1] "2009-12-03"
> strptime("2009-03",format="%Y-%m") # year and month. Doesn't work. ?
[1] NA
Update per spiegare il motivo per cui questo non è un duplicato L'eventuale duplicato è stato chiesto un paio di anni dopo questa domanda e si occupa di un'API separata in R
: la funzione asDate
. Questa domanda riguarda una peculiarità della funzione strptime
che si applica ancora a R
3.1.3.
Poiché le date sono giorni? Cosa ti aspetti che emetta? – hadley
Volevi che fosse il giorno dell'anno? Se è così, prova "% j". –
Mi aspettavo che usasse il giorno corrente come predefinito, il modo in cui lo farà se esegui il timeout ("2009", format = "% Y"). Ciò risulta in "2009-12-01". – bantic