Buenos días Estoy intentando calcular la suma de los últimos n valores de una serie de datos para luego crear un objeto zoo antes de hacer más análisis. Lo que hago es calcular la media de todas las columnas de la matriz y luego el acumulado semanal de la media. Al ser una acumulación semanal, comienza a calcular a partir del séptimo valor por lo que añado seis valores nulos (sé que la lluvia en esos días fue 0). El problema viene al crear un objeto zoo ya que los 6 primeros datos de lluvia acumulada aparecen con un valor aleatorio y a partir de ahí existen más errores. Supongo que estoy cometiendo algún error en el paso a un objeto zoo pero no lo veo. Gracias library(zoo) pluja=read.csv("pluja.dat",header=F,sep=",") pdat=pluja[2:length(pluja)] mitja=rowMeans(pdat, na.rm=TRUE) pdat2=cbind(pluja,mitja) a7=diff(cumsum(c(0,pdat2$mitja)), 7) s7=c(0,0,0,0,0,0,a7) pdat2=cbind(pluja,mitja,s7) pfecha=as.Date(pdat2[,1],"%d/%m/%Y") # Fecha en format as.Date pmitja=zoo(pdat2$mitja,pfecha) p7=zoo(pdat2$s7,pfecha)> pdat2$s7[1:10][1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 [7] 0.001449275 0.269565217 0.515942029 0.515942029> pdat2$mitja[1:10][1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 [7] 0.001449275 0.268115942 0.246376812 0.000000000> pmitja[1:10]1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 1968-01-07 0 0 0 0 0 0 0 1968-01-08 1968-01-09 1968-01-10 0 0 0> p7[1:10]1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 1968-01-07 43.4023376 0.3102941 39.1014706 39.1014706 39.1014706 38.5000000 30.5794118 1968-01-08 1968-01-09 1968-01-10 22.8411765 0.0000000 49.7621005 -- ----------- Francisco Pastor Meteorology department, Instituto Universitario CEAM-UMH ceam.es ----------- mail: paco en ceam.es skype: paco.pastor.guzman Researcher ID: researcherid.com/rid/B-8331-2008 Cosis profile: cosis.net/profile/francisco.pastor ----------- Parque Tecnologico, C/ Charles R. Darwin, 14 46980 PATERNA (Valencia), Spain Tlf. 96 131 82 27 - Fax. 96 131 81 90
Hola, No uso la librería zoo() pero por ver si se puede ayudar en algo... Y quizás no lo he entendido bien, ¿el problema es que aparecen valores aleatorios en esos días cuando tienen que aparecer ceros? ¿No te es posible volver a poner ceros en los días entre semana sobre ese objeto zoo mientras se entiende el por qué se introducen? Saludos, Carlos Ortega qualityexcellence.es 2011/3/15 Paco Pastor <paco@ceam.es>> Buenos días > > Estoy intentando calcular la suma de los últimos n valores de una serie de > datos para luego crear un objeto zoo antes de hacer más análisis. Lo que > hago es calcular la media de todas las columnas de la matriz y luego el > acumulado semanal de la media. Al ser una acumulación semanal, comienza a > calcular a partir del séptimo valor por lo que añado seis valores nulos (sé > que la lluvia en esos días fue 0). El problema viene al crear un objeto zoo > ya que los 6 primeros datos de lluvia acumulada aparecen con un valor > aleatorio y a partir de ahí existen más errores. > > Supongo que estoy cometiendo algún error en el paso a un objeto zoo pero no > lo veo. > > Gracias > > library(zoo) > > pluja=read.csv("pluja.dat",header=F,sep=",") > > pdat=pluja[2:length(pluja)] > > mitja=rowMeans(pdat, na.rm=TRUE) > > pdat2=cbind(pluja,mitja) > > a7=diff(cumsum(c(0,pdat2$mitja)), 7) > > s7=c(0,0,0,0,0,0,a7) > > pdat2=cbind(pluja,mitja,s7) > > pfecha=as.Date(pdat2[,1],"%d/%m/%Y") # Fecha en format as.Date > > pmitja=zoo(pdat2$mitja,pfecha) > > p7=zoo(pdat2$s7,pfecha) > > pdat2$s7[1:10] >> > > [1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 > 0.000000000 > > [7] 0.001449275 0.269565217 0.515942029 0.515942029 > > pdat2$mitja[1:10] >> > > [1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 > 0.000000000 > > [7] 0.001449275 0.268115942 0.246376812 0.000000000 > > pmitja[1:10] >> > > 1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 > 1968-01-07 > > 0 0 0 0 0 0 0 > > 1968-01-08 1968-01-09 1968-01-10 > > 0 0 0 > > p7[1:10] >> > > 1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 > 1968-01-07 > > 43.4023376 <0.3102941>0.3102941 39.1014706 39.1014706 39.1014706 > 38.5000000 30.5794118 > > 1968-01-08 1968-01-09 1968-01-10 > > 22.8411765 0.0000000 49.7621005 > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > ceam.es > ----------- > mail: paco@ceam.es > skype: paco.pastor.guzman > Researcher ID: researcherid.com/rid/B-8331-2008 > Cosis profile: cosis.net/profile/francisco.pastor > ----------- > Parque Tecnologico, C/ Charles R. Darwin, 14 > 46980 PATERNA (Valencia), Spain > Tlf. 96 131 82 27 - Fax. 96 131 81 90 > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Hola a todos y gracias a Carlos J. Gil Según me comentó el problema era que al leer los datos no estaban ordenados por fecha y, por tanto, en la conversión a zoo no coincidían los valores con las fechas correspondientes. Añadiendo la ordenación por fechas justo después de la lectura ya salen los datos correctamente pluja=read.csv("pluja.dat",header=F,sep=",") fecha=as.Date(pluja[,1],"%d/%m/%Y") precip=pluja[order(fecha),] Gracias a todos El 15/03/2011 12:40, Paco Pastor escribió:> Buenos días > > Estoy intentando calcular la suma de los últimos n valores de una > serie de datos para luego crear un objeto zoo antes de hacer más > análisis. Lo que hago es calcular la media de todas las columnas de la > matriz y luego el acumulado semanal de la media. Al ser una > acumulación semanal, comienza a calcular a partir del séptimo valor > por lo que añado seis valores nulos (sé que la lluvia en esos días fue > 0). El problema viene al crear un objeto zoo ya que los 6 primeros > datos de lluvia acumulada aparecen con un valor aleatorio y a partir > de ahí existen más errores. > > Supongo que estoy cometiendo algún error en el paso a un objeto zoo > pero no lo veo. > > Gracias > > library(zoo) > > pluja=read.csv("pluja.dat",header=F,sep=",") > > pdat=pluja[2:length(pluja)] > > mitja=rowMeans(pdat, na.rm=TRUE) > > pdat2=cbind(pluja,mitja) > > a7=diff(cumsum(c(0,pdat2$mitja)), 7) > > s7=c(0,0,0,0,0,0,a7) > > pdat2=cbind(pluja,mitja,s7) > > pfecha=as.Date(pdat2[,1],"%d/%m/%Y") # Fecha en format as.Date > > pmitja=zoo(pdat2$mitja,pfecha) > > p7=zoo(pdat2$s7,pfecha) > >> pdat2$s7[1:10] > > [1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 > 0.000000000 > > [7] 0.001449275 0.269565217 0.515942029 0.515942029 > >> pdat2$mitja[1:10] > > [1] 0.000000000 0.000000000 0.000000000 0.000000000 0.000000000 > 0.000000000 > > [7] 0.001449275 0.268115942 0.246376812 0.000000000 > >> pmitja[1:10] > > 1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 > 1968-01-07 > > 0 0 0 0 0 > 0 0 > > 1968-01-08 1968-01-09 1968-01-10 > > 0 0 0 > >> p7[1:10] > > 1968-01-01 1968-01-02 1968-01-03 1968-01-04 1968-01-05 1968-01-06 > 1968-01-07 > > 43.4023376 0.3102941 39.1014706 39.1014706 39.1014706 38.5000000 > 30.5794118 > > 1968-01-08 1968-01-09 1968-01-10 > > 22.8411765 0.0000000 49.7621005 >-- ----------- Francisco Pastor Meteorology department, Instituto Universitario CEAM-UMH ceam.es ----------- mail: paco en ceam.es skype: paco.pastor.guzman Researcher ID: researcherid.com/rid/B-8331-2008 Cosis profile: cosis.net/profile/francisco.pastor ----------- Parque Tecnologico, C/ Charles R. Darwin, 14 46980 PATERNA (Valencia), Spain Tlf. 96 131 82 27 - Fax. 96 131 81 90