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

Rubén Gómez Antolí lobo en mucharuina.com
Dom Jun 2 22:10:38 CEST 2013


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



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