buenos dias. tengo un fichero excel con datos de fecha en este formato "02-07-03"(dia-mes-año)y al leerlo con el R me los lee como un numero entero y no como una fecha como puedo cambiar esto. creo k tiene algo de relacion con numero julianos o gregorianos.GRACIAS
A ver si te esto te ayuda:
Primero se convierte la columna fechas en clase caracter y luego en clase date.
> datos$F1<-as.character(datos$F1)
> datos$F1<-as.Date(datos$F1,"%Y-%m-%d")
Nota:
%Y se refiere al año con cuatro dígitos. Ej: 2007
%y es el año con sólo dos dígitos.
%m son los meses
%d son los días.
Ten en cuenta que debes escribir la orden as.Date() con el formato en el que estén tus fechas. Si por ejemplo tienes "14/05/09" debes poner:
>as.Date("14/05/09","%d/%m/%y")
Un saludo, Antonio.
Primero se convierte la columna fechas en clase caracter y luego en clase date.
> datos$F1<-as.character(datos$F1)
> datos$F1<-as.Date(datos$F1,"%Y-%m-%d")
Nota:
%Y se refiere al año con cuatro dígitos. Ej: 2007
%y es el año con sólo dos dígitos.
%m son los meses
%d son los días.
Ten en cuenta que debes escribir la orden as.Date() con el formato en el que estén tus fechas. Si por ejemplo tienes "14/05/09" debes poner:
>as.Date("14/05/09","%d/%m/%y")
Un saludo, Antonio.
muchas gracias Antonio pero he intentado lo que me as dicho y no me sale bien, ya que me pone todos los datos de fechas con el mismo valor. te escribo de forma mas detallada lo que tengo y lo que he echo a ver si me puedes ayudar. GRACIAS
este es el formato de la fecha en el archivo original:
$ FECHA.DESC.: num 39255 39259 39269 39282 39301 ...
utilizo tu sentencia: datos$FECHAS:DESC<-as.character(datos$FECHAS.DESC) y me lo convierte asi:
chr [1:834] "39255" "39259" "39269" "39282" "39301" "39185" "39185" "39185" "39191" "39228" "39291" "39306" "39307" "39330" "39352" ...
ahora utilizo la otra sentencia: datos$FECHAS.DESC<-as.Date(datos$FECHAS.DESC,"%d-%m-%y") y me aparecen la variable llena de NA por lo que si modifico la sentencia poniendo el valor de la 1º fecha :datos$FECHAS.DESC<-as.Date("22-06-07","%d-%m-%y") y obtengo una variable donde todos los valores son el valor de la fecha puesto , no me respeta las fechas originales, las que si me aparecen en el excel.
Sabes como puedo solucionarlo. MUCHAS GRACIAS
este es el formato de la fecha en el archivo original:
$ FECHA.DESC.: num 39255 39259 39269 39282 39301 ...
utilizo tu sentencia: datos$FECHAS:DESC<-as.character(datos$FECHAS.DESC) y me lo convierte asi:
chr [1:834] "39255" "39259" "39269" "39282" "39301" "39185" "39185" "39185" "39191" "39228" "39291" "39306" "39307" "39330" "39352" ...
ahora utilizo la otra sentencia: datos$FECHAS.DESC<-as.Date(datos$FECHAS.DESC,"%d-%m-%y") y me aparecen la variable llena de NA por lo que si modifico la sentencia poniendo el valor de la 1º fecha :datos$FECHAS.DESC<-as.Date("22-06-07","%d-%m-%y") y obtengo una variable donde todos los valores son el valor de la fecha puesto , no me respeta las fechas originales, las que si me aparecen en el excel.
Sabes como puedo solucionarlo. MUCHAS GRACIAS
El motivo es que internamente las fechas se almacenan como un número, se me ocurren dos opciones:
1. Haces que excel convierta las fechas a carácter y luego haces lo que te ha comentado Antonio.
2. Utilizas otra variante de la función:
> x<-c(39255 ,39259,39269,39282,39301)
> as.Date(x, origin="1900-01-01")
[1] "2007-06-24" "2007-06-28" "2007-07-08" "2007-07-21" "2007-08-09"
En caso necesario cambia el origen (origin).
Saludos.
1. Haces que excel convierta las fechas a carácter y luego haces lo que te ha comentado Antonio.
2. Utilizas otra variante de la función:
> x<-c(39255 ,39259,39269,39282,39301)
> as.Date(x, origin="1900-01-01")
[1] "2007-06-24" "2007-06-28" "2007-07-08" "2007-07-21" "2007-08-09"
En caso necesario cambia el origen (origin).
Saludos.
gracias manuel, la verdad es que asi se me las convierte en fechas pero con un pequeño problema,las fechas originales y las que me coloca el R aplicando tu sentencia salen desplazadas dos dias, es decir las que me colocan el R son dos dias antes que las originales. Ejemplo fecha original 24-07-07 fecha R: 26-07-07 sabes como puedo eliminar estos dos dias de desfase. intente cambiar el origin pero no funciona.GRACIAS
¿Qué origen estás poniendo? A mí me funciona.
Ten en cuenta que en origen el día es el último número.
> x<-c(39255 ,39259,39269,39282,39301)
> as.Date(x, origin="1900-01-01")
[1] "2007-06-24" "2007-06-28" "2007-07-08" "2007-07-21" "2007-08-09"
> as.Date(x, origin="1900-01-03")
[1] "2007-06-26" "2007-06-30" "2007-07-10" "2007-07-23" "2007-08-11"
Ten en cuenta que en origen el día es el último número.
> x<-c(39255 ,39259,39269,39282,39301)
> as.Date(x, origin="1900-01-01")
[1] "2007-06-24" "2007-06-28" "2007-07-08" "2007-07-21" "2007-08-09"
> as.Date(x, origin="1900-01-03")
[1] "2007-06-26" "2007-06-30" "2007-07-10" "2007-07-23" "2007-08-11"
> as.Date(x, origin="1910-02-03")
[1] "2017-07-26" "2017-07-30" "2017-08-09" "2017-08-22" "2017-09-10"
Saludos.
[1] "2017-07-26" "2017-07-30" "2017-08-09" "2017-08-22" "2017-09-10"
Saludos.
GRACIAS la clave estaba en poner como fecha de origen:"1899-12-30" para corregir los dos dias de desfase que me ponia el programa. sinceramente muchas gracias. un saludo