[R-es] problema con campos que tienen formato fecha

Pedro Concejero Cerezo pedro.concejerocerezo en telefonica.com
Mar Ago 26 11:37:00 CEST 2014


(deliberadamente sin acentos porque "pasan cosas raras")
Hola, Angela,
En tu codigo no observo ninguna conversion de tus datos de entrada a fechas.
Lo mas habitual es tener la fecha con o sin hora con formato cadena, con los digitos separados por espacio, "-" o "/".
No hace falta que cargues lubridate para leer o convertir fechas. Hay dos funciones en el base, as.Date y as.POSIXct
A continuación un ejemplito, solo resaltar que si el formato es estandar con as.POSIXct no tienes que hacer practicamente nada, y si no tienes que decirle a la funcion que formato tiene tu fecha. Para esto yo siempre acudo a la estupenda reference card
 http://cran.r-project.org/doc/contrib/Short-refcard.pdf
(segunda pagina a la derecha)

Espero que sea útil!
Pedro

# Ejemplo conversión cadenas a fechas
# 1 con as.Date

cadena_fecha1 <- "2011-03-27 01:30:00"
cadena_fecha2 <- "31/10/2010 01:30:00"

fecha1 <- as.Date(cadena_fecha1, "%Y-%m-%d %H:%M:%S")
fecha1; class(fecha1)

fecha2 <- as.Date(cadena_fecha2, "%d/%m/%Y %H:%M:%S")
fecha2; class(fecha2)

fecha3 <- fecha1 - fecha2
fecha3; class(fecha3)

# 2 con as.POSIXct

fecha1 <- as.POSIXct(cadena_fecha1) # Sin opciones porque tiene formato estandar yyyy-mm-dd
fecha1; class(fecha1)

fecha2 <- as.POSIXct(cadena_fecha2)
fecha2; class(fecha2)  # Sale mal porque toma estandar de fecha inglesa
fecha2 <- as.POSIXct(cadena_fecha2, "%d/%m/%Y %H:%M:%S")
fecha2; class(fecha2)  # Sale mal porque no sabe la zona horaria -ejemplo tomado de ?as.POSIXct
fecha2 <- as.POSIXct(cadena_fecha2, "%d/%m/%Y %H:%M:%S", tz = "CET")
fecha2; class(fecha2)  # Ahora sí sale bien

fecha3 <- fecha1 - fecha2
fecha3; class(fecha3)



El 26/08/2014 2:19, r-help-es-request en r-project.org<mailto:r-help-es-request en r-project.org> escribió:

BASE <- read.table("Todos2014.txt", header = TRUE, sep = "\t")
#attach (BASE)
dim (BASE)

#library (lubridate)

#convertir a formato de fecha y hora
BASE <- cbind (BASE, (dmy_hms(paste(BASE$Date,BASE$Time,sep=" "))))

names (BASE)[12]<-"Time2"

#empieza rutina para calcular duraci?e visitas
visitas <- data.frame ()

n<-1
narbol <- 1

while (n <= dim(BASE)[1]) {
  m = n
  if (n < dim (BASE)[1]) {
    while (BASE$Registro[m+1] == "FALSE" & m+1 <= dim(BASE)[1]) {m=m+1}
    if (m+1 == dim (BASE)[1] & BASE$Registro[m+1]== "FALSE") {m+1}}

  if (m == n) { (visitas[narbol,1]<-0) }
  else
  {visitas[narbol,1]<-(BASE$Time2[m]-BASE$Time2[n])}
  visitas[narbol,2]<-BASE$SpeciesID[n]
  visitas[narbol,3]<-BASE$StationID[n]
  visitas[narbol,4]<-BASE$Time2[n]
  visitas[narbol,5]<-BASE$Time2[m]

  narbol <- narbol + 1
  n = m+1
}

colnames (visitas) <- c("Duracion", "Mammal", "Arbol", "FechaI", "FechaF")



--
Pedro Concejero
BI & Big Data - Internal Exploitation - Telefónica I+D<http://www.tid.es>
E-mail: pedro.concejerocerezo en telefonica.com<mailto:pedro.concejerocerezo en telefonica.com>
skype: pedro.concejero
twitter @ConcejeroPedro<https://twitter.com/ConcejeroPedro>
linkedin pedroconcejero<http://www.linkedin.com/in/pedroconcejero/es>
Únete a la lista R en español<https://stat.ethz.ch/mailman/listinfo/r-help-es#%21> y a tu gRupo local R, el mío es el gRupo R madRid <http://r-es.org/Grupo+de+Inter%C3%A9s+Local+de+Madrid+-+GIL+Madrid&structure=Comunidad>

________________________________

Este mensaje y sus adjuntos se dirigen exclusivamente a su destinatario, puede contener información privilegiada o confidencial y es para uso exclusivo de la persona o entidad de destino. Si no es usted. el destinatario indicado, queda notificado de que la lectura, utilización, divulgación y/o copia sin autorización puede estar prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.

The information contained in this transmission is privileged and confidential information intended only for the use of the individual or entity named above. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this transmission in error, do not read it. Please immediately reply to the sender that you have received this communication in error and then delete it.

Esta mensagem e seus anexos se dirigem exclusivamente ao seu destinatário, pode conter informação privilegiada ou confidencial e é para uso exclusivo da pessoa ou entidade de destino. Se não é vossa senhoria o destinatário indicado, fica notificado de que a leitura, utilização, divulgação e/ou cópia sem autorização pode estar proibida em virtude da legislação vigente. Se recebeu esta mensagem por erro, rogamos-lhe que nos o comunique imediatamente por esta mesma via e proceda a sua destruição

	[[alternative HTML version deleted]]



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