El título lo tiene: ¿cómo se convierte una fecha POSIX a día de año?¿Cómo se convierte la fecha de POSIX a día del año en R?
Respuesta
Una alternativa es formatear el objeto "POSIXt"
usando 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
que es preferible recordar que el día de los años es basado en cero en el estándar POSIX.
Como ?POSIXlt
revela, un $yday
sufijo a un POSIXlt
fecha (o incluso un vector de tal) se convertirá a día del año. Tenga en cuenta que POSIX cuenta el 1 de enero como el día 0, por lo que es posible que desee agregar 1 al resultado.
Me tomó muchísimo tiempo encontrar esto, así que pensé en ask and answer my own question.
Alternativamente, el excelente paquete lubridate
proporciona la función yday
, que es solo una envoltura para el método anterior. Define convenientemente funciones similares para otras unidades (month
, year
, hour
, ...).
today <- Sys.time()
yday(today)
Parte de por qué me tomó tanto tiempo es que si 'd' es un objeto POSIXlt,' str (d) 'no da ninguna indicación de que' d' tiene otros atributos. Esto, y el hecho de que el operador '$' funciona en cuanto a los elementos en un vector de objetos POSIXlt significa que está ocurriendo algo más que una extracción habitual. Me gustaría leer un poco más sobre eso si alguien puede recomendar un buen lugar para comenzar. – Gregor
Y, para responder a mi propio comentario, 'attributes' es el comando que estaba buscando,' attributes (d) 'proporciona todas las formas de mostrar' d'. – Gregor
Je, yo estaba luchando con esta pregunta también. Parece que usted mismo lo respondió (en lugar de simplemente hacerlo sin publicarlo aquí). ¡Gracias por eso! – Mikko
Esta es la manera como lo hago:
as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160
Funciona bien para' POSIXlt' (como se menciona en mi respuesta), pero no para los objetos 'POSIXct'. Por ejemplo, 'Sys.time() $ yday' no funciona. – Gregor
Me di cuenta que no es lo que el cartel estaba buscando, pero necesitaba para convertir POSIX fecha- veces en un fraccional los días del año para el análisis de series de tiempo y terminó haciendo esto:
today <- Sys.time()
doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')
¡Parece útil! Tienes mi voto. – Gregor
- 1. Convertir fracción de día a veces POSIX en R
- 2. Python Pregunta: año y día del año hasta la fecha?
- 3. Día juliano del año en Java
- 4. Django: Grupo por fecha (día, mes, año)
- 5. Obtener detalles de la fecha (día, mes, año) en GWT
- 6. ¿Cómo se calcula el día del año para una fecha específica en Objective-C?
- 7. obtener la semana del año a partir del día del año
- 8. Crear fecha de día, mes, año campos en MySQL
- 9. fecha Dividir en diferentes columnas de año, mes y día
- 10. DateTime Format Día del año
- 11. primer día del año en curso
- 12. ¿Cómo obtener el día del año en ruby?
- 13. ¿Cómo encontrar el día actual del año en PHP?
- 14. Buscar el nombre del día por año, mes y día
- 15. php - encuentra la fecha para el mismo día de la semana del año pasado
- 16. Crear una fecha solo con mes y día, sin año
- 17. fecha en MongoDB: al insertar objetos Fecha en la base de datos Mongo, la fecha se convierte en 1 día anterior a ella
- 18. Hoy es el día del año enésimo
- 19. cómo obtener el día del año en concha?
- 20. Marca de tiempo Python del día, mes, año
- 21. VB.NET Obtener solo el año a partir de la fecha
- 22. Ordenando por fecha descendente - mes, día y año
- 23. Generar NSDate a partir del día, mes y año
- 24. Redondear una fecha POSIX (POSIXct) con funcionalidad base R
- 25. Formatear fecha sin año
- 26. cómo conseguir el primer día y el último día de la semana y el año número
- 27. Pregunta simple: ¿Cómo dividir la fecha (17/08/2011) en mes, día, año? PHP
- 28. ¿Algoritmo de fecha a día de la semana?
- 29. Cómo ser seleccionado día/mes y año de jquery datepicker
- 30. ¿Cómo se cambia el orden de SelectDateWidget de Django a día, mes y año?
Acaba de ejecutar en mi primer conjunto de datos con una columna 'POSIXct'. Pareció hora de marcar la suya como la respuesta aceptada. – Gregor
@Gavin, ¿también es posible convertir una fecha en días desde un dato específico, por ejemplo, el número de días desde el 1 de marzo de 2015? También puedo publicar como una nueva pregunta ... –
@ B.Davis Puede hacer algo como 'as.numeric (Sys.Date() - as.Date ('2015-03-01', format = '% Y- % m-% d ')) ' – Henry