[R-es] datos climáticos cambio de formato
daniel
daniel319 en gmail.com
Vie Feb 15 22:39:35 CET 2013
Milagros,
library(xts) # carga también zoo
# genero una secuencia de año-mes para los datos
t <- timeBasedSeq('1941-01/1946-12')
t
# creo un data frame. Si hubieras enviado tu data.frame con dput
habría usado el tuyo.
df <- as.data.frame( matrix(1:72, ncol=12, byrow=TRUE))
df
# genero NA
df[ 5, 6] <- NA
df[ 3, 7] <- NA
df[ 6, 1] <- NA
df[ 3, 2] <- NA
df
# creo un vector para usarlo con zoo.
v <- as.vector(t(df))
v
# creo el objeto zoo indicandole que el indice es una fecha
z <- zoo(v, order.by = as.Date(t))
z
# aplico la función na.aggregate del paquete zoo
na.aggregate(as.zoo(z), months)
Espero te sirva.
Daniel Merino
El día 15 de febrero de 2013 18:24, Carlos Ortega
<cof en qualityexcellence.es> escribió:
> Hola,
>
> La verdad es que no sé si esto te valdrá... porque no sé qué quieres hacer
> después...
>
> ##################################################
> Lines <- "Year V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
> 1941 18.0 16.3 15.2 10.1 8.1 8.3 8.8 9.2 7.9 12.2 11.9 14.6
> 1942 17.2 15.9 13.6 11.6 8.7 6.2 6.4 7.2 9.7 12.0 14.1 16.7
> 1943 17.6 17.3 13.5 12.5 10.5 7.0 8.2 7.9 -999.9 -999.9 13.5 17.7
> 1944 18.3 17.0 15.7 -999.9 9.6 9.4 8.0 7.5 9.5 10.6 14.6 17.4
> 1945 19.8 17.5 15.8 12.8 10.9 8.1 7.3 8.3 10.3 11.7 13.4 14.9
> 1946 15.9 15.0 14.2 12.7 9.2 7.6 8.1 8.6 10.2 10.8 13.1 15.2
> "
>
> t.data<-textConnection(Lines)
> datos<-read.table(t.data, header=T, as.is=T)
> close(t.data)
>
> library(reshape2)
> library(sqldf)
> datosres <- melt(datos, id.vars=c(1))
> datos.ord <- sqldf("select * from datosres order by Year")
>
> dat.zoo <- zooreg(datos.ord$value, start=1946, frequency=12)
> ##################################################
>
>
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
>
> El 15 de febrero de 2013 19:49, Milagros Rodriguez <
> milagrosrodriguezc en gmail.com> escribió:
>
>> Hola. Gracias Olivier!
>> Con lo sugerido obtengo:
>> > zooreg(valT, frequency = 12, start = c(1941, 1))
>> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
>> 1941(1) 1941 18.0 16.3 15.2 10.1 8.1 8.3 8.8 9.2 7.9 12.2 11.9 14.6
>> 1941(2) 1942 17.2 15.9 13.6 11.6 8.7 6.2 6.4 7.2 9.7 12.0 14.1 16.7
>> 1941(3) 1943 17.6 17.3 13.5 12.5 10.5 7.0 8.2 7.9 NA NA 13.5 17.7
>> 1941(4) 1944 18.3 17.0 15.7 NA 9.6 9.4 8.0 7.5 9.5 10.6 14.6 17.4
>> .....
>>
>> Pero no es correcto el resultado.
>>
>> Sin embargo, logré que lo hiciera con:
>> valT.ts <- ts(valT, start = 1941, end = 2006)
>> class(valT.ts)
>> [1] "mts" "ts"
>>
>> > valT.ts
>>
>> Time Series:
>> Start = 1941
>> End = 2006
>> Frequency = 1
>> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
>> 1941 1941 18.0 16.3 15.2 10.1 8.1 8.3 8.8 9.2 7.9 12.2 11.9 14.6
>> 1942 1942 17.2 15.9 13.6 11.6 8.7 6.2 6.4 7.2 9.7 12.0 14.1 16.7
>> 1943 1943 17.6 17.3 13.5 12.5 10.5 7.0 8.2 7.9 NA NA 13.5 17.7
>> 1944 1944 18.3 17.0 15.7 NA 9.6 9.4 8.0 7.5 9.5 10.6 14.6 17.4
>> 1945 1945 19.8 17.5 15.8 12.8 10.9 8.1 7.3 8.3 10.3 11.7 13.4 14.9
>> 1946 1946 15.9 15.0 14.2 12.7 9.2 7.6 8.1 8.6 10.2 10.8 13.1 15.2
>> 1947 1947 15.9 15.9 NA NA 10.2 9.8 7.6 7.6 9.8 11.9 14.2 14.7
>> .....
>>
>> Pero al intentar aplicar la función:
>>
>> > na.aggregate(valT.ts, months)
>> Error en UseMethod("months") :
>> no applicable method for 'months' applied to an object of class "ts"
>>
>>
>> Y no logro tener el formato necesario con mis datos. Cómo se podrá
>> solucionar?
>>
>> Gracias nuevamente!
>>
>>
>> El 15 de febrero de 2013 15:24, Olivier Nuñez <onunez en unex.es> escribió:
>>
>> > Intenta,
>> >
>> > zooreg(T, frequency = 12, start = c(1941, 1))
>> >
>> > o utilizando el paquete ts
>> >
>> > ts(T, frequency = 12, start = c(1941, 1))
>> >
>> > Un saludo. Olivier
>> >
>> > -- ______________________________**______
>> >
>> > Olivier G. Nuñez
>> > Email: onunez en unex.es
>> > http://matematicas.unex.es/~**onunez <http://matematicas.unex.es/~onunez
>> >
>> > Tel : +34 663 03 69 09
>> > Departamento de Matemáticas
>> > Universidad de Extremadura
>> >
>> > ______________________________**______
>> >
>> >
>> >
>> >
>> >
>> > El 15/02/2013, a las 17:11, Milagros Rodriguez escribió:
>> >
>> > Hola!!
>> >>
>> >> tengo un data.frame donde cada fila corresponde a un año y cada columna
>> a
>> >> un mes (De enero a diciembre)
>> >>
>> >> head(valT)
>> >>>
>> >>
>> >> V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13
>> >> 1941 18.0 16.3 15.2 10.1 8.1 8.3 8.8 9.2 7.9 12.2 11.9 14.6
>> >> 1942 17.2 15.9 13.6 11.6 8.7 6.2 6.4 7.2 9.7 12.0 14.1 16.7
>> >> 1943 17.6 17.3 13.5 12.5 10.5 7.0 8.2 7.9 -999.9 -999.9 13.5 17.7
>> >> 1944 18.3 17.0 15.7 -999.9 9.6 9.4 8.0 7.5 9.5 10.6 14.6 17.4
>> >> 1945 19.8 17.5 15.8 12.8 10.9 8.1 7.3 8.3 10.3 11.7 13.4 14.9
>> >> 1946 15.9 15.0 14.2 12.7 9.2 7.6 8.1 8.6 10.2 10.8 13.1 15.2
>> >>
>> >>
>> >> Me gustaría transformarlo a un objeto "zoo" o "ts", es decir, que R
>> >> reconozca que cada fila es un año y cada columna es un mes.
>> >>
>> >>
>> >> Alguna sugerencia???
>> >>
>> >> Muchas gracias
>> >>
>> >> Milagros
>> >>
>> >> [[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<
>> https://stat.ethz.ch/mailman/listinfo/r-help-es>
>> >>
>> >
>> >
>>
>> [[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
>>
>>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>
> [[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
Más información sobre la lista de distribución R-help-es