[R-es] Colocar objeto Dates dentro de un vector.

Jaume Tormo j@utorb|@ @end|ng |rom gm@||@com
Jue Mar 5 22:42:11 CET 2020


Hola a todos,

Álvaro, has dado en el clavo, eso es lo que pasaba. Me imagino que no hay
manera de meter una lista dentro de un vector.
Al final he usado tu sugerencia. Y me queda así:

# preliminares
  install.packages( lubridate ); library( lubridate )
  v <- c(0, 0, 0)
  original <- c(2019, 308, 1700, 25) # c(año, día del año, hora,
temperatura) esto sale así de un sensor de temperatura

# convertimos los datos originales en algo que entienda R
  a <- years(original[1] )
  d <- days(original[2]-1 ) # el -1 es un ajuste por como son los datos
originales
  h <- hours( substr(original[3], 1, 2) )
  fecha <- a+d+h # Conseguimos una fecha completa
  fecha.b <- as.Date(fecha, origin="0000-01-01" ) # convertimos la fecha en
días del mes en lugar de días del año
  fecha.c <- as.character(fecha.b)

# Ahora sí que funciona
  v[3] <- fecha.c
  v
  [1] "0"                   "0"                   "2019-11-04 17:00:00"

Muchas gracias a todos.

Jaume.



El mar., 25 feb. 2020 a las 11:01, Álvaro Hernández Vicente (<alvarohv using um.es>)
escribió:

> Hola, Jaume:
>
> El problema que tienes en tu enfoque y por lo que R no te deja añadir
> esa fecha al vector es que no es un valor lo que intentas sustituir. Tu
> 'fecha' lo que contiene es un objeto 'Period' de lubridate y 'fecha.b'
> verás que es de tipo POSIXlt, que viene a ser internamente como una
> lista (mira ?DateTimeClasses). Puedes comprobarlo con:
>
> str(fecha)
> class(fecha.b)
>
> Si quieres mantener tu enfoque (que muchas veces es lo que uno mejor
> entiende) podrías guardar tu fecha como una cadena (tu vector cambiará a
> tipo character) o guardarlo tal cual en el vector (que se te convertirá
> a numérico, como se guardan las fechas, desde 1970-01-01).
>
> string <- paste0(original[1:3], collapse = "-")
> fecha <- parse_date_time(string, orders = "%y-%j-%H%M")
>
> # opción 1
> v <- c(0, 0, 0)
> v[1] <- as.character(fecha)
> as_datetime(v)
>
> # opción 2
> v <- c(0, 0, 0)
> v[1] <- fecha
> as_datetime(v)
>
> Un saludo
> Álvaro
>
> El 24/2/20 a las 21:54, Jaume Tormo escribió:
> >   Muchas gracias,
> >
> > Probaré eso también y ya os cuento.
> >
> > Jaume.
> >
> > El lun., 17 feb. 2020 a las 22:10, Javier Marcuzzi (<
> > javier.ruben.marcuzzi using gmail.com>) escribió:
> >
> >> Estimado Jaume Tormo
> >>
> >> En lo personal yo utilizo un enfoque como el que comenta Carlos Ortega,
> se
> >> me ocurre que posiblemente funcione si a su código le coloca algo de
> >> formato, me refiero a esta forma:
> >>
> >> as.Date("10/21/2012", format = "%m/%d/%Y")
> >>
> >> Javier Rubén Marcuzzi
> >>
> >> El lun., 17 feb. 2020 a las 17:55, Jaume Tormo (<jautorbla using gmail.com>)
> >> escribió:
> >>
> >>> Carlos, muchas gracias, voy a probarlo.
> >>> Pero me sigue intrigando por que no puedo ponerlo como elemento de un
> >>> vector... Misterios del R. SI lo averiguo os lo digo.
> >>>
> >>> Jaume.
> >>>
> >>> El sáb., 15 feb. 2020 a las 19:08, Carlos Ortega (<
> >>> cof using qualityexcellence.es>)
> >>> escribió:
> >>>
> >>>> Hola,
> >>>>
> >>>> Una alternativa que te puede ayudar es enfocar el problema de esta
> otra
> >>>> forma.
> >>>> Puedes ir guardando tus vectores "original" en un data.frame y luego
> >>>> convertirlo a fechas.
> >>>>
> >>>> Una vez tienes estas fechas, puedes hacer cálculos o extraer otras
> >>>> variables.
> >>>>
> >>>>
> >>>>> original<-c(2019,308,1700, 25)
> >>>>> df <- data.frame(
> >>>> +   Year = original[1],
> >>>> +   DayNum = original[2],
> >>>> +   Hour = original[3]
> >>>> + )
> >>>>> my_fecha <- strptime( paste(df$Year, df$DayNum, df$Hour, sep = ""),
> >>>> "%Y%j%H" )
> >>>>> my_fecha
> >>>> [1] "2019-11-04 17:00:00 CET"
> >>>>> my_fecha <- strptime( paste(original[1], original[2], original[3],
> >>> sep =
> >>>> ""), "%Y%j%H" )
> >>>>> my_fecha
> >>>> [1] "2019-11-04 17:00:00 CET"
> >>>>
> >>>> Gracias,
> >>>> Carlos Ortega
> >>>> www.qualityexcellence.es
> >>>>
> >>>>
> >>>> El sáb., 15 feb. 2020 a las 12:45, Jaume Tormo (<jautorbla using gmail.com
> >)
> >>>> escribió:
> >>>>
> >>>>> Hola,
> >>>>>
> >>>>> Estoy encontrando un problema al intentar poner un objeto Dates en un
> >>>>> vector o dataframe.
> >>>>> Mi ejemplo
> >>>>> # preliminares
> >>>>>    install.packages( lubridate ); library( lubridate )
> >>>>>    v <- c(0, 0, 0)
> >>>>>    original<-c(2019,308,1700, 25) # c(año, día del año, hora,
> >>> temperatura)
> >>>>> esto sale así de un sensor de temperatura
> >>>>>
> >>>>> # convertimos los datos originales en algo que entienda R
> >>>>>    a <- years(original[1] )
> >>>>>    d <- days(original[2]-1 ) # el -1 es un ajuste por como son los
> datos
> >>>>> originales
> >>>>>    h <- hours( substr(original[3], 1, 2) )
> >>>>>    fecha <- a+d+h # Conseguimos una fecha completa
> >>>>>    fecha.b <- as.Date(fecha, origin="0000-01-01" ) # convertimos la
> >>> fecha
> >>>>> en
> >>>>> días del mes en lugar de días del año
> >>>>> # mi problema
> >>>>>    # Si asigno fecha a un elemento de un vector me sale 0
> >>>>>    v[2] <- fecha
> >>>>>    v[2]
> >>>>>    # Si asigno fecha.b a un elemento de un vector me da un error
> >>>>>    v[1] <- fecha.b
> >>>>>    Me da cosas parecidas si intento asignar un lugar en un dataframe,
> >>>>>
> >>>>> Entiendo que as.Date convierte la fecha en algo que tiene más de un
> >>>>> elemento ¿Puede ser eso? Si es así ¿Cómo veo lo que hay dentro del
> >>> objeto
> >>>>> para sacar solo lo que me interese?
> >>>>>
> >>>>> Muchas gracias.
> >>>>>
> >>>>> --
> >>>>> Jaume Tormo.
> >>>>> https://es.linkedin.com/in/jaumetormo
> >>>>> https://acercad.wordpress.com/
> >>>>>
> >>>>>          [[alternative HTML version deleted]]
> >>>>>
> >>>>> _______________________________________________
> >>>>> R-help-es mailing list
> >>>>> R-help-es using r-project.org
> >>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>>>
> >>>>
> >>>> --
> >>>> Saludos,
> >>>> Carlos Ortega
> >>>> www.qualityexcellence.es
> >>>>
> >>>
> >>> --
> >>> Jaume Tormo.
> >>> https://es.linkedin.com/in/jaumetormo
> >>> https://acercad.wordpress.com/
> >>>
> >>>          [[alternative HTML version deleted]]
> >>>
> >>> _______________________________________________
> >>> R-help-es mailing list
> >>> R-help-es using r-project.org
> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>>
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


-- 
Jaume Tormo.
https://es.linkedin.com/in/jaumetormo
https://acercad.wordpress.com/

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es