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 (<[email protected]>) 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 (< > > [email protected]>) 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 (<[email protected]>) > >> 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 (< > >>> [email protected]>) > >>> 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 (<[email protected] > >) > >>>> 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 > >>>>> [email protected] > >>>>> 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 > >>> [email protected] > >>> https://stat.ethz.ch/mailman/listinfo/r-help-es > >>> > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > [email protected] > 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]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
