Hola a tod@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]]
Hola Juan Carlos. Te vale algo así?> HORA=c("1206","1854","054") > hora=strptime(HORA,format="%H%M") > hora[1] "2013-03-07 12:06:00" "2013-03-07 18:54:00" "2013-03-07 05:04:00" Un Saludo, _____________________________ Miguel Ángel Rodríguez Muíños Dirección Xeral de Innovación e Xestión da Saúde Pública Consellería de Sanidade Xunta de Galicia http://dxsp.sergas.es -----Mensaje original----- De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de JC A Enviado el: jueves, 07 de marzo de 2013 13:04 Para: r-help-es en r-project.org Asunto: [R-es] Convertir eh hora 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]] 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
Hola Miguel, El problema es que el campo hora me incluye la fecha y yo solo necesito la hora. Una opción sería crear campos temporales y de ahí quedarme con la hora y eliminar la fecha. Pero me gustaría saber si existe una forma de hacerlo directamente, sin pasos intermedios. Un saludo JC> From: miguel.angel.rodriguez.muinos@sergas.es > To: j_arronte@hotmail.com; r-help-es@r-project.org > Date: Thu, 7 Mar 2013 13:16:46 +0100 > Subject: RE: [R-es] Convertir eh hora > > Hola Juan Carlos. > > > Te vale algo así? > > > HORA=c("1206","1854","054") > > hora=strptime(HORA,format="%H%M") > > hora > [1] "2013-03-07 12:06:00" "2013-03-07 18:54:00" "2013-03-07 05:04:00" > > > Un Saludo, > _____________________________ > Miguel Ángel Rodríguez Muíños > Dirección Xeral de Innovación e Xestión da Saúde Pública > Consellería de Sanidade > Xunta de Galicia > http://dxsp.sergas.es >[[alternative HTML version deleted]]
Y así?> HORA=c("1206","1854","0540") > hora=substr(strptime(HORA,format="%H%M"),12,16) > hora[1] "12:06" "18:54" "05:40" Un Saludo, Miguel. De: JC A [mailto:j_arronte@hotmail.com] Enviado el: jueves, 07 de marzo de 2013 13:29 Para: Rodríguez Muíños, Miguel Ángel; r-help-es@r-project.org Asunto: RE: [R-es] Convertir eh hora Hola Miguel, El problema es que el campo hora me incluye la fecha y yo solo necesito la hora. Una opción sería crear campos temporales y de ahí quedarme con la hora y eliminar la fecha. Pero me gustaría saber si existe una forma de hacerlo directamente, sin pasos intermedios. Un saludo JC> From: miguel.angel.rodriguez.muinos@sergas.es<mailto:miguel.angel.rodriguez.muinos@sergas.es> > To: j_arronte@hotmail.com<mailto:j_arronte@hotmail.com>; r-help-es@r-project.org<mailto:r-help-es@r-project.org> > Date: Thu, 7 Mar 2013 13:16:46 +0100 > Subject: RE: [R-es] Convertir eh hora > > Hola Juan Carlos. > > > Te vale algo así? > > > HORA=c("1206","1854","054") > > hora=strptime(HORA,format="%H%M") > > hora > [1] "2013-03-07 12:06:00" "2013-03-07 18:54:00" "2013-03-07 05:04:00" > > > Un Saludo, > _____________________________ > Miguel Ángel Rodríguez Muíños > Dirección Xeral de Innovación e Xestión da Saúde Pública > Consellería de Sanidade > Xunta de Galicia > http://dxsp.sergas.es >________________________________ 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 [[alternative HTML version deleted]]
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
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@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@hotmail.com> escribió: > > > > > > > > Hola a tod@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@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > -- > Daniel > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
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@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@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@hotmail.com> escribió: > > > > > > > > > > > > Hola a tod@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@r-project.org > > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > > > > > > > > -- > > Daniel > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@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@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Juan Carlos,
El which() en
db[,-which(names(db) %in% c("HORA", "FECHA"))]
no es necesario.   Basta con escribir
db[ , !names(db) %in% c("HORA", "FECHA") ]
Un saludo,
Jorge.-
2013/3/8 JC A <j_arronte@hotmail.com>
> Buenas tardes,
>
> Creo que ya está conseguido y que ahora la columna Fecha y Hora de mi base
> de datos ya está en el formato apropiado.
>
> db$FECHA2 <- db$FECHA
> db$FECHA2 <- as.Date(as.character(db$FECHA), format("%Y%m%d"))
> db$HORA2 <- db$HORA
> db$HORA2 <- formatC(as.numeric(db$HORA2), width = 4, flag =
"0")
> db$HORA2 <-substr(strptime(db$HORA2,format="%H%M"),12,16)
> db<-db[,-which(names(db) %in% c("HORA", "FECHA"))]
>
> He estado probando sólo con 1000 datos y me ha salido lo que buscaba.
> Veremos si ahora con la base de datos completa (casi 2.500.000 filas x13
> columnas), no tengo problemas con el ordenador al ejecutarlos.
>
> Muchas gracias a todos por vuestras ideas.
>
> Un saludo
>
> Juan Carlos
>
>
	[[alternative HTML version deleted]]
Buenos días Jorge,
Siempre se aprenden cosas nuevas y más en R.
Un saludo y gracias
JC
***************************************
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.
From: jorgeivanvelez@gmail.com
Date: Fri, 8 Mar 2013 09:53:35 +1100
Subject: Re: [R-es] Convertir eh hora
To: j_arronte@hotmail.com
CC: r-help-es@r-project.org
Juan Carlos,
El which() en 
db[,-which(names(db) %in% c("HORA", "FECHA"))]
no es necesario.   Basta con escribir
db[ , !names(db) %in% c("HORA", "FECHA") ]
Un saludo,
Jorge.-
2013/3/8 JC A <j_arronte@hotmail.com>
Buenas tardes,
Creo que ya está conseguido y que ahora la columna Fecha y Hora de mi base de
datos ya está en el formato apropiado.
db$FECHA2 <- db$FECHA
db$FECHA2 <- as.Date(as.character(db$FECHA), format("%Y%m%d"))
db$HORA2 <- db$HORA
db$HORA2 <- formatC(as.numeric(db$HORA2), width = 4, flag = "0")
db$HORA2 <-substr(strptime(db$HORA2,format="%H%M"),12,16)
db<-db[,-which(names(db) %in% c("HORA", "FECHA"))]
He estado probando sólo con 1000 datos y me ha salido lo que buscaba. 
Veremos si ahora con la base de datos completa (casi 2.500.000 filas x13
 columnas), no tengo problemas con el ordenador al ejecutarlos.
Muchas gracias a todos por vuestras ideas.
Un saludo
Juan Carlos
 		 	   		  
 		 	   		  
	[[alternative HTML version deleted]]