[R-es] Conversión de objeto temporal (TS) a matriz (o data.frame)

Marcuzzi, Javier Rubén javier.ruben.marcuzzi en gmail.com
Lun Jun 3 00:51:46 CEST 2013


Estimado Rubén Gómez Antolí

En mi caso en particular al trabajar con fechas, me encontré con 
inconvenientes, algunos de ellos fueron mejorados en R, hoy estoy 
desactualizado, pero creo que en el siguiente lugar 
http://cran.r-project.org/web/views/TimeSeries.html hay referencia 
actualizada, esperando que en esta encuentre lo que necesite lo saludo muy 
atentamente.

Javier Marcuzzi

-----Original Message----- 
From: Rubén Gómez Antolí
Sent: Sunday, June 02, 2013 5:10 PM
To: r-help-es
Subject: [R-es] Conversión de objeto temporal (TS) a matriz (o data.frame)

Hola a todos:

La pregunta ha quedado clara en el asunto, pero: ¿existe alguna función
que convierta un objeto temporal (TS) a matriz o data.frame?

En algunos cálculos que estoy haciendo me viene bien convertir un objeto
temporal a matriz para poder hacer cálculos parciales por meses o años
(aplicando apply en la matriz) pero no he encontrado ninguna función que
haga la conversión.

He «fabricado» una para el caso de frecuencia de datos mensual pero se
me ha dado el caso de un objeto con frecuencia anual y ya me he empeñado
en hacer la función «de carácter general» y... la cosa se complica bastante.

Si alguien conoce algo estupendo, en caso contrario seguiré con mi función.

Gracias por vuestra atención y por las posibles respuestas.

Salud y Revolución.

Lobo.

Pd: Por si alguien esta interesado, a continuación pongo el código para
la conversión de una serie mensual.

ts.a.matriz<-function(x) {
   # Función que convierte un objeto temporal (TS)
   # en una matriz. Añade NA a los meses que faltan.
   if ( !is.ts(x) )
     stop("x tiene que ser un objeto temporal")

   require(TSA)
   tiempo<-time(x)
   #meses<-season(x)
   x.matriz<-matrix(c(
     #c(rep(NA,which(meses[1] == levels(meses))-1)),
     c(rep(NA,
       (tiempo[1]-floor(tiempo[1]))*12-1
       )
     ),
     x,
     #c(
     #  rep(NA,
     # (12- which(meses[length(meses)] == levels(meses)))
     #  )
     #)
     c(rep(NA,(12-
       (tiempo[length(tiempo)]-floor(tiempo[length(tiempo)]))*12
       ))
     )
     ),
     byrow=T,ncol=12,
     dimnames=list(
       c(floor(tiempo[1]):floor(tiempo[length(tiempo)])),
       c(format(ISOdate(2013,1:12,1),"%b"))
     )
   )
   return(x.matriz)
}

Pd2: Por cierto, ¿hay alguna forma de que ISOdate ponga la primera letra
de los nombres de los meses en mayúscula?
-- 
Libertad es poder elegir en cualquier momento. Ahora yo elijo GNU/Linux,
para no atar mis manos con las cadenas del soft propietario.
Porque la libertad no es tu derecho, es tu responsabilidad.
http://www.mucharuina.com
---------
Desde El Ejido, en Almería, usuario registrado Linux #294013
http://www.counter.li.org

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



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