[R-es] Convertir eh hora

daniel daniel319 en gmail.com
Jue Mar 7 16:29:47 CET 2013


La forma correcta y elegante me parece es la de Jorge.

Daniel Merino

El día 7 de marzo de 2013 11:32, Jorge I Velez
<jorgeivanvelez en gmail.com> escribió:
> Una manera es adaptando el vector HORA.  Utilizando la solucion de Miguel
> Angel seria algo como lo siguiente:
>
> HORA <- c("1206","1854","054")
> HORA <- formatC(as.numeric(HORA), width = 4, flag = "0")
> substr(strptime(HORA,format="%H%M"),12,16)
> # [1] "12:06" "18:54" "00:54"
>
> Saludos,
> Jorge.-
>
>
> 2013/3/8 <miguel.angel.rodriguez.muinos en sergas.es>
>
>> Hola Carlos.
>>
>> Con mi propuesta sucede lo mismo....
>> Por lo que tampoco es la solución.
>>
>> > HORA=c("1206","1854","054")
>> > hora=substr(strptime(HORA,format="%H%M"),12,16)
>> > hora
>> [1] "12:06" "18:54" "05:04"
>>
>> Un saludo,
>> Miguel.
>>
>>
>>
>>
>>
>> -----Mensaje original-----
>> De: r-help-es-bounces en r-project.org
>> [mailto:r-help-es-bounces en r-project.org] En nombre de Carlos Ortega
>> Enviado el: jueves, 07 de marzo de 2013 14:57
>> Para: daniel
>> CC: JC A; r-help-es en r-project.org
>> Asunto: Re: [R-es] Convertir eh hora
>>
>> Hola,
>>
>> Sí, tenéis razón...
>>
>> Con parse_date_time(), aunque cerca, resuelve el problema con los meses de
>> ymd_hms() pero no el de los 054:
>>
>> > parse_date_time(x, "%y%m%d %H%M")
>>  3 parsed with %Y%m%d             %H%M
>> [1] "2012-10-07 12:06:00 UTC" "2011-06-22 18:54:00 UTC" "2011-06-23
>> 05:04:00 UTC"
>>
>> Saludos,
>> Carlos.
>>
>>
>> El 7 de marzo de 2013 14:35, daniel <daniel319 en gmail.com> escribió:
>>
>> > Creo que falta algo en la función de lubridate
>> >
>> > ymd_hms(x, truncated=3)
>> >
>> >
>> > Pero aún así no se si resuelve lo que quiere JC A en cuando a si
>> > '20110623             054'  es
>> > 2012-06-23 00:54  o
>> > 2012-06-23 05:04
>> >
>> > Daniel Merino
>> >
>> >
>> > El día 7 de marzo de 2013 10:29, Jorge I Velez
>> > <jorgeivanvelez en gmail.com> escribió:
>> > > Gracias, Carlos.   Estaba a punto de mencionar esa funcion, pero no
>> > > creo
>> > que
>> > > realice lo que Daniel necesita.  Por ejemplo la primera entrada de x
>> > > es
>> > > "20121007  1206"  y con lubridate el resultado es 2020-12-10
>> > > 07:12:06.
>> >  Es
>> > > claro que algo no esta bien.   --JIV
>> > >
>> > >
>> > > 2013/3/8 Carlos Ortega <cof en qualityexcellence.es>
>> > >>
>> > >> Hola,
>> > >>
>> > >> Otra opción es con el paquete "lubridate". Con la función "ymd_hms()"
>> > que
>> > >> prueba varias opciones hasta encontrar la recurrencia del formato.
>> > >>
>> > >> Con solo una función se resuelve:
>> > >>
>> > >> > library(lubridate)
>> > >> > x <- c('20121007             1206', '20110622             1854',
>> > >> +        '20110623             054')
>> > >> >
>> > >> > ymd_hms(x)
>> > >>  3 parsed with %y%m%d%H             %M%S
>> > >> [1] "2020-12-10 07:12:06 UTC" "2020-11-06 22:18:54 UTC" "2020-11-06
>> > >> 23:05:04 UTC"
>> > >>
>> > >> Saludos,
>> > >> Carlos Ortega
>> > >> www.qualityexcellence.es
>> > >>
>> > >>
>> > >>
>> > >>
>> > >>
>> > >> El 7 de marzo de 2013 13:48, daniel <daniel319 en gmail.com> escribió:
>> > >>
>> > >> > Primero fijate si los datos respetan el ejemplo que enviastes
>> > >> > (lugar de los años, meses, dias, horas y minutos, en especial la
>> > >> > cantidad de dígitos para cada uno, para modificar la función si
>> > >> > es necesario. A diferencia de Miguel supongo que en el ejemplo
>> > >> > donde hora:minuto es 054, lo que representa es 0 horas y 54
>> > >> > minutos, si mi interpretación es incorrecta la solución de Miguel
>> > >> > es la correcta..Si alguien puede contribuir con algo más genérico
>> > >> > se agradecerá, pero para empezar esta es mi contribución
>> > >> >
>> > >> >
>> > >> > x <- c('20121007             1206', '20110622             1854',
>> > >> > '20110623             054')
>> > >> >
>> > >> > tiempo <- function(x) {
>> > >> > xF <- as.POSIXlt( strptime(x, '%Y%m%d %H%M')) xT <- as.POSIXlt(
>> > >> > strptime( paste(substr(x, 1, max(gregexpr(" ", x)[[1]])), 0,
>> > >> > substr(x,max(gregexpr(" ", x)[[1]])+1,nchar( x)), sep=""),
>> > >> > '%Y%m%d %H%M')) if((nchar(x)-max(gregexpr(" ", x)[[1]])) == 3) xT
>> > >> > else xF }
>> > >> >
>> > >> > lapply(x, tiempo)
>> > >> >
>> > >> > Daniel Merino
>> > >> >
>> > >> >
>> > >> >
>> > >> > El día 7 de marzo de 2013 09:04, JC A <j_arronte en hotmail.com>
>> > escribió:
>> > >> > >
>> > >> > >
>> > >> > >
>> > >> > > Hola a tod en s,
>> > >> > >
>> > >> > > Me han mandado una base de datos y al abrirla me he encontrado
>> > >> > > con
>> > la
>> > >> > fecha y la hora en el siguiente formato:
>> > >> > >
>> > >> > >
>> > >> > >
>> > >> > > FECHA                  HORA
>> > >> > >
>> > >> > > 20121007             1206
>> > >> > >
>> > >> > > 20110622             1854
>> > >> > >
>> > >> > > 20110623             054
>> > >> > >
>> > >> > >
>> > >> > > He conseguido que la Fecha me quedara en el formato dd/mm/aaaa
>> > >> > > mediante
>> > >> > el script
>> > >> > >
>> > >> > > db[, "FECHA"] <- as.Date(as.character(db[, "FECHA"]),format =
>> > >> > > "%Y%m%d")
>> > >> > > Sin embargo, con la hora todavía no he dado con la forma. Se me
>> > >> > > está
>> > >> > pasando algo por alto y no doy con ello
>> > >> > >
>> > >> > > ¿Alguna idea?
>> > >> > >
>> > >> > > Un saludo y Gracias
>> > >> > >
>> > >> > > Juan Carlos
>> > >> > >
>> > >> > >
>> > >> > > ***************************************
>> > >> > > Si las cuerdas del trapecio las corté fue para subir y atarlas
>> > >> > > y ver a la luna otra vez.
>> > >> > > Y volverlas a cortar una y mil veces y boquear como los peces
>> > >> > > cuando les toca perder.
>> > >> > >
>> > >> > >
>> > >> > >         [[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
>> > >> > >
>> > >> >
>> > >> >
>> > >> >
>> > >> > --
>> > >> > Daniel
>> > >> >
>> > >> > _______________________________________________
>> > >> > 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]]
>> > >>
>> > >>
>> > >> _______________________________________________
>> > >> R-help-es mailing list
>> > >> R-help-es en r-project.org
>> > >> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> > >>
>> > >
>> >
>> >
>> >
>> > --
>> > Daniel
>> >
>>
>>
>>
>> --
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>         [[alternative HTML version deleted]]
>>
>>
>> Nota: A información contida nesta mensaxe e os seus posibles documentos
>> adxuntos é privada e confidencial e está dirixida únicamente ó seu
>> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe,
>> por favor elimínea. A distribución ou copia desta mensaxe non está
>> autorizada.
>>
>> Nota: La información contenida en este mensaje y sus posibles documentos
>> adjuntos es privada y confidencial y está dirigida únicamente a su
>> destinatario/a. Si usted no es el/la destinatario/a original de este
>> mensaje, por favor elimínelo. La distribución o copia de este mensaje no
>> está autorizada.
>>
>> See more languages: http://www.sergas.es/aviso_confidencialidad.htm
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>



-- 
Daniel



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