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]]
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 en 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
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 en 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 en 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 en 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]]