Saludos a todos Hace poco que estoy usando R y como era de esperar me asalta una duda. Tengo unos datos que conforman una serie de datos irregular (son valores diarios pero no para todos los días) que quiero relacionar con otra serie de datos regular (esta sí con datos diarios completos). Por una parte tengo los datos "irregulares" en formato: 1968-02-25 368 1971-01-12 168 1985-10-25 5400 ....... y los datos regulares en fomato 1968-01-01 23 1968-01-02 24 ........ 1985-12-31 16 Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos deberán tener la misma longitud. Buscando por ahí he visto como extender la serie de datos irregulares pero no exactamente como quiero: # Leo los datos "irregulares" datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") # Conversión en serie temporal discreta fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) library(zoo) data=zoo(datos[,3],fecha) Para hacer una prueba he creado una serie de datos temporales, solamente con la fecha z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) He probado a unir los datos con merge pero no acaba de funcionar kk=merge(g,data,all=TRUE) Seguro que podéis ver algún error, probablemente de concepto. Os agradezco cualquier ayuda. Saludos Paco -- ----------- Francisco Pastor Meteorology department, Instituto Universitario CEAM-UMH http://www.ceam.es ----------- mail: paco en ceam.es skype: paco.pastor.guzman Researcher ID: http://www.researcherid.com/rid/B-8331-2008 Cosis profile: http://www.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, ¿El problema lo tienes a la hora de hacer el merge? ¿Puedes adjuntar una parte de tanto "z" como de "g"?. Lo puedes hacer así: head(z,20), head(g,20). Con este detalle vamos a ver si podemos crear "kk", para continuar con el análisis. Saludos, Carlos Ortega www.qualityexcellence.es www.datanalytics.com/blog 2011/1/5 Paco Pastor <paco@ceam.es>> Saludos a todos > > Hace poco que estoy usando R y como era de esperar me asalta una duda. > Tengo unos datos que conforman una serie de datos irregular (son valores > diarios pero no para todos los días) que quiero relacionar con otra serie de > datos regular (esta sí con datos diarios completos). Por una parte tengo los > datos "irregulares" en formato: > > 1968-02-25 368 > 1971-01-12 168 > 1985-10-25 5400 > ....... > > y los datos regulares en fomato > > 1968-01-01 23 > 1968-01-02 24 > ........ > 1985-12-31 16 > > Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos > deberán tener la misma longitud. Buscando por ahí he visto como extender la > serie de datos irregulares pero no exactamente como quiero: > > # Leo los datos "irregulares" > datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") > > # Conversión en serie temporal discreta > fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) > library(zoo) > data=zoo(datos[,3],fecha) > > Para hacer una prueba he creado una serie de datos temporales, solamente > con la fecha > > z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) > g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) > > He probado a unir los datos con merge pero no acaba de funcionar > > kk=merge(g,data,all=TRUE) > > > Seguro que podéis ver algún error, probablemente de concepto. Os agradezco > cualquier ayuda. > > Saludos > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco@ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2011-Jan-05 14:09 UTC
[R-es] Conversión de series de tiempo irregulares
Mira esto: z <- data.frame( v = 1:2, d = as.Date(c("1968-01-01", "2007-12-31"))) g <- data.frame( d = seq(min(z$d), max(z$d), by = 1) ) kk <- merge( z, g, all = T ) Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 5 de enero de 2011 14:55, Paco Pastor <paco en ceam.es> escribió:> Saludos a todos > > Hace poco que estoy usando R y como era de esperar me asalta una duda. Tengo > unos datos que conforman una serie de datos irregular (son valores diarios > pero no para todos los días) que quiero relacionar con otra serie de datos > regular (esta sí con datos diarios completos). Por una parte tengo los datos > "irregulares" en formato: > > 1968-02-25 368 > 1971-01-12 168 > 1985-10-25 5400 > ....... > > y los datos regulares en fomato > > 1968-01-01 23 > 1968-01-02 24 > ........ > 1985-12-31 16 > > Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos > deberán tener la misma longitud. Buscando por ahí he visto como extender la > serie de datos irregulares pero no exactamente como quiero: > > # Leo los datos "irregulares" > datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") > > # Conversión en serie temporal discreta > fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) > library(zoo) > data=zoo(datos[,3],fecha) > > Para hacer una prueba he creado una serie de datos temporales, solamente con > la fecha > > z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) > g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) > > He probado a unir los datos con merge pero no acaba de funcionar > > kk=merge(g,data,all=TRUE) > > > Seguro que podéis ver algún error, probablemente de concepto. Os agradezco > cualquier ayuda. > > Saludos > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco en ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Gregorio R. Serrano
2011-Jan-05 16:13 UTC
[R-es] Conversión de series de tiempo irregulares
Buenas. Cuando haces el merge, g no es un objeto de clase zoo, sino de clase Date, supongo que el merge de dos objetos de distinta clase es lo que hace que "no acabe de funcionar" (aunque una descripción más precisa del error sería de ayuda). Siguiendo con el ejemplo de Carlos Gil, al que añado la creación de objetos zoo, lo siguiente corre como se espera: z <- data.frame( v = 1:2, d = as.Date(c("1968-01-01", "2007-12-31"))) g <- data.frame( d = seq(min(z$d), max(z$d), by = 1) ) g$vv <- rnorm(length(g$d)) zzoo <- zoo(z$v, z$d) gzoo <- zoo(g$vv, g$d) kk <- merge( zzoo, gzoo, all = T ) head(kk) tail(kk) class(kk) #zoo Un saludo Gregorio R. Serrano El 5 de enero de 2011 14:55, Paco Pastor <paco@ceam.es> escribió:> Saludos a todos > > Hace poco que estoy usando R y como era de esperar me asalta una duda. > Tengo unos datos que conforman una serie de datos irregular (son valores > diarios pero no para todos los días) que quiero relacionar con otra serie de > datos regular (esta sí con datos diarios completos). Por una parte tengo los > datos "irregulares" en formato: > > 1968-02-25 368 > 1971-01-12 168 > 1985-10-25 5400 > ....... > > y los datos regulares en fomato > > 1968-01-01 23 > 1968-01-02 24 > ........ > 1985-12-31 16 > > Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos > deberán tener la misma longitud. Buscando por ahí he visto como extender la > serie de datos irregulares pero no exactamente como quiero: > > # Leo los datos "irregulares" > datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") > > # Conversión en serie temporal discreta > fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) > library(zoo) > data=zoo(datos[,3],fecha) > > Para hacer una prueba he creado una serie de datos temporales, solamente > con la fecha > > z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) > g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) > > He probado a unir los datos con merge pero no acaba de funcionar > > kk=merge(g,data,all=TRUE) > > > Seguro que podéis ver algún error, probablemente de concepto. Os agradezco > cualquier ayuda. > > Saludos > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco@ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Dr. Gregorio R. Serrano Dpto. Economía Cuantitativa (UCM) Voz:+34 91394 2361 Fax:+34 91394 2591 http://www.grserrano.es [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2011-Jan-05 16:24 UTC
[R-es] Conversión de series de tiempo irregulares
Bueno, el "merge" y la creación de los objetos de la clase "zoo" son operaciones conmutativas... Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 5 de enero de 2011 17:13, Gregorio R. Serrano <grserrano en ccee.ucm.es> escribió:> Buenas. > > Cuando haces el merge, g no es un objeto de clase zoo, sino de clase Date, > supongo que el merge de dos objetos de distinta clase es lo que hace que "no > acabe de funcionar" (aunque una descripción más precisa del error sería de > ayuda). > > Siguiendo con el ejemplo de Carlos Gil, al que añado la creación de objetos > zoo, lo siguiente corre como se espera: > > z <- data.frame( v = 1:2, d = as.Date(c("1968-01-01", "2007-12-31"))) > g <- data.frame( d = seq(min(z$d), max(z$d), by = 1) ) > g$vv <- rnorm(length(g$d)) > > zzoo <- zoo(z$v, z$d) > gzoo <- zoo(g$vv, g$d) > > kk <- merge( zzoo, gzoo, all = T ) > > head(kk) > tail(kk) > class(kk) #zoo > > > Un saludo > Gregorio R. Serrano > > El 5 de enero de 2011 14:55, Paco Pastor <paco en ceam.es> escribió: > >> Saludos a todos >> >> Hace poco que estoy usando R y como era de esperar me asalta una duda. >> Tengo unos datos que conforman una serie de datos irregular (son valores >> diarios pero no para todos los días) que quiero relacionar con otra serie de >> datos regular (esta sí con datos diarios completos). Por una parte tengo los >> datos "irregulares" en formato: >> >> 1968-02-25 368 >> 1971-01-12 168 >> 1985-10-25 5400 >> ....... >> >> y los datos regulares en fomato >> >> 1968-01-01 23 >> 1968-01-02 24 >> ........ >> 1985-12-31 16 >> >> Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos >> deberán tener la misma longitud. Buscando por ahí he visto como extender la >> serie de datos irregulares pero no exactamente como quiero: >> >> # Leo los datos "irregulares" >> datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") >> >> # Conversión en serie temporal discreta >> fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) >> library(zoo) >> data=zoo(datos[,3],fecha) >> >> Para hacer una prueba he creado una serie de datos temporales, solamente >> con la fecha >> >> z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) >> g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) >> >> He probado a unir los datos con merge pero no acaba de funcionar >> >> kk=merge(g,data,all=TRUE) >> >> >> Seguro que podéis ver algún error, probablemente de concepto. Os agradezco >> cualquier ayuda. >> >> Saludos >> >> Paco >> >> -- >> ----------- >> Francisco Pastor >> Meteorology department, Instituto Universitario CEAM-UMH >> http://www.ceam.es >> ----------- >> mail: paco en ceam.es >> skype: paco.pastor.guzman >> Researcher ID: http://www.researcherid.com/rid/B-8331-2008 >> Cosis profile: http://www.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 en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Dr. Gregorio R. Serrano > Dpto. Economía Cuantitativa (UCM) > Voz:+34 91394 2361 > Fax:+34 91394 2591 > http://www.grserrano.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 > >
Buenos dias Paco, Una manera relativamente simple de hacer lo que quieres, es ilustrada en los primeros ejemplos de require(zoo) ?merge.zoo Saludos, Jorge Ivan Velez 2011/1/5 Paco Pastor <>> Saludos a todos > > Hace poco que estoy usando R y como era de esperar me asalta una duda. > Tengo unos datos que conforman una serie de datos irregular (son valores > diarios pero no para todos los días) que quiero relacionar con otra serie de > datos regular (esta sí con datos diarios completos). Por una parte tengo los > datos "irregulares" en formato: > > 1968-02-25 368 > 1971-01-12 168 > 1985-10-25 5400 > ....... > > y los datos regulares en fomato > > 1968-01-01 23 > 1968-01-02 24 > ........ > 1985-12-31 16 > > Supongo que para poder analizarlos conjuntamente los dos conjuntos de datos > deberán tener la misma longitud. Buscando por ahí he visto como extender la > serie de datos irregulares pero no exactamente como quiero: > > # Leo los datos "irregulares" > datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") > > # Conversión en serie temporal discreta > fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) > library(zoo) > data=zoo(datos[,3],fecha) > > Para hacer una prueba he creado una serie de datos temporales, solamente > con la fecha > > z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) > g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) > > He probado a unir los datos con merge pero no acaba de funcionar > > kk=merge(g,data,all=TRUE) > > > Seguro que podéis ver algún error, probablemente de concepto. Os agradezco > cualquier ayuda. > > Saludos > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco@ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Gregorio R. Serrano
2011-Jan-05 16:56 UTC
[R-es] Conversión de series de tiempo irregulares
Pues es verdad... entonces sólo aplica el punto de que tiene que hacer merge con objetos de la misma clase, que es el origen de su problema. Gregorio El 5 de enero de 2011 17:24, Carlos J. Gil Bellosta <cgb@datanalytics.com>escribió:> Bueno, el "merge" y la creación de los objetos de la clase "zoo" son > operaciones conmutativas... > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > El día 5 de enero de 2011 17:13, Gregorio R. Serrano > <grserrano@ccee.ucm.es> escribió: > > Buenas. > > > > Cuando haces el merge, g no es un objeto de clase zoo, sino de clase > Date, > > supongo que el merge de dos objetos de distinta clase es lo que hace que > "no > > acabe de funcionar" (aunque una descripción más precisa del error sería > de > > ayuda). > > > > Siguiendo con el ejemplo de Carlos Gil, al que añado la creación de > objetos > > zoo, lo siguiente corre como se espera: > > > > z <- data.frame( v = 1:2, d = as.Date(c("1968-01-01", "2007-12-31"))) > > g <- data.frame( d = seq(min(z$d), max(z$d), by = 1) ) > > g$vv <- rnorm(length(g$d)) > > > > zzoo <- zoo(z$v, z$d) > > gzoo <- zoo(g$vv, g$d) > > > > kk <- merge( zzoo, gzoo, all = T ) > > > > head(kk) > > tail(kk) > > class(kk) #zoo > > > > > > Un saludo > > Gregorio R. Serrano > > > > El 5 de enero de 2011 14:55, Paco Pastor <paco@ceam.es> escribió: > > > >> Saludos a todos > >> > >> Hace poco que estoy usando R y como era de esperar me asalta una duda. > >> Tengo unos datos que conforman una serie de datos irregular (son valores > >> diarios pero no para todos los días) que quiero relacionar con otra > serie de > >> datos regular (esta sí con datos diarios completos). Por una parte tengo > los > >> datos "irregulares" en formato: > >> > >> 1968-02-25 368 > >> 1971-01-12 168 > >> 1985-10-25 5400 > >> ....... > >> > >> y los datos regulares en fomato > >> > >> 1968-01-01 23 > >> 1968-01-02 24 > >> ........ > >> 1985-12-31 16 > >> > >> Supongo que para poder analizarlos conjuntamente los dos conjuntos de > datos > >> deberán tener la misma longitud. Buscando por ahí he visto como extender > la > >> serie de datos irregulares pero no exactamente como quiero: > >> > >> # Leo los datos "irregulares" > >> datos=read.csv("datos1_1968-2007.csv", header=T,sep=",") > >> > >> # Conversión en serie temporal discreta > >> fecha=as.POSIXct(strptime(as.character(datos[,2]),format="%d/%m/%Y")) > >> library(zoo) > >> data=zoo(datos[,3],fecha) > >> > >> Para hacer una prueba he creado una serie de datos temporales, solamente > >> con la fecha > >> > >> z <- zoo(1:2, as.Date(c("1968-01-01", "2007-12-31"))) > >> g <- seq(as.Date(start(z)), as.Date(end(z)), by = 1) > >> > >> He probado a unir los datos con merge pero no acaba de funcionar > >> > >> kk=merge(g,data,all=TRUE) > >> > >> > >> Seguro que podéis ver algún error, probablemente de concepto. Os > agradezco > >> cualquier ayuda. > >> > >> Saludos > >> > >> Paco > >> > >> -- > >> ----------- > >> Francisco Pastor > >> Meteorology department, Instituto Universitario CEAM-UMH > >> http://www.ceam.es > >> ----------- > >> mail: paco@ceam.es > >> skype: paco.pastor.guzman > >> Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > >> Cosis profile: http://www.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 > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > > > > > > > > -- > > Dr. Gregorio R. Serrano > > Dpto. Economía Cuantitativa (UCM) > > Voz:+34 91394 2361 > > Fax:+34 91394 2591 > > http://www.grserrano.es > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > > > >-- Dr. Gregorio R. Serrano Dpto. Economía Cuantitativa (UCM) Voz:+34 91394 2361 Fax:+34 91394 2591 http://www.grserrano.es [[alternative HTML version deleted]]
Hola a todos y gracias por vuestra ayuda. Con vuestros mensajes he podido crear la serie de tiempo regular. Copio a continuación lo que he hecho por si a alguien le sirve algún día. library(zoo) # Datos de incendios idatos=read.csv("prova.csv", header=T,sep=",") # Lectura datos incendios ifecha=as.Date(idatos[,2],"%d/%m/%Y") # Fecha incendios con formato as.Date idata=zoo(idatos[,3],ifecha) # Creación del fichero de datos fecha,area (serie irregular) # Datos de temperatura tdatos=read.csv("7038.txt", header=T,sep=";") # Lectura datos temperatura tfecha=as.Date(tdatos[,4],"%d/%m/%Y") # Fecha incendios con formato as.Date tdata=zoo(tdatos[,5],tfecha) # Creación del fichero de datos fecha,temperatura (serie regular) # Mezcla de los datos de las series (NA=0) final.datos=merge(tdata,idata,fill=0) Los datos de incendios tienen el formato: "idprov","date","area" 43,07/01/1968,600 3,28/03/1968,125 46,13/07/1968,190 16,27/07/1968,540 3,29/07/1968,300 46,02/08/1968,120 y los de temperatura: 7038;LAGUNA DE TORREVIEJA;A;1/1/1968;18.0;8.0;-- 7038;LAGUNA DE TORREVIEJA;A;2/1/1968;17.0;10.0;-- 7038;LAGUNA DE TORREVIEJA;A;3/1/1968;21.0;10.0;-- 7038;LAGUNA DE TORREVIEJA;A;4/1/1968;22.0;12.0;-- 7038;LAGUNA DE TORREVIEJA;A;5/1/1968;21.0;10.0;-- 7038;LAGUNA DE TORREVIEJA;A;6/1/1968;22.0;6.0;-- 7038;LAGUNA DE TORREVIEJA;A;7/1/1968;20.0;13.0;-- Ahora me surge un nuevo problema. Mis conocimientos de R y estadística son básicos (siendo generoso). Quiero buscar tendencias y correlaciones entre temperatura e incendios, por lo que he estado leyendo voy a probar algunas cosas con R pero me surge una duda sobre como tratar los datos. En el caso de la temperatura hay solamente un dato diario pero en los incendios puede haber, de hecho hay, días con varios datos (varios incendios en zonas diferentes con varios datos de área quemada). ¿Como debo tratar los datos? He pensado reestructurar los datos de incendio de forma que me queden dos valores diarios que serían número de incendios y área total quemada (la suma de todos los incendios de ese día). Así tendría dos variables para correlacionar con la temperatura. ¿Es correcto analizar los datos así?¿tiene R la capacidad de hacer estos análisis sin dividir los datos en dos subconjuntos? Supongo que mezclar la serie de datos de temperatura con la de incendios puede darme problemas cuando tenga dos o más registros de incendios en un mismo días. Bueno, gracias de antemano por vuestra ayuda y perdonad si estoy abusando de la lista con tanta pregunta que quizá no es exactamente de R. Paco -- ----------- Francisco Pastor Meteorology department, Instituto Universitario CEAM-UMH http://www.ceam.es ----------- mail: paco@ceam.es skype: paco.pastor.guzman Researcher ID: http://www.researcherid.com/rid/B-8331-2008 Cosis profile: http://www.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 [[alternative HTML version deleted]]
Hola Paco, Hola Paco, Sobre la duda que comentas al final de tu correo, comentarte varias vías a explorar. Lo primero es que por supuesto que con R puedes agrupar los datos de los incendios para tener un único valor. El “qué” quieres hacer en concreto es algo que has de decidir tú (si quieres promediar los diferentes valores, o utilizar una mediana o algún otro indicador que te llegues incluso a inventar, o calcular los metros cuadrados afectados por los incendios). Ahora, viene el “cómo”. La forma en la que te sugiero para colapsar esas diferentes entradas para conseguir un valor único es mediante varias funciones que tiene la librería “reshape2”. Es muy fácil de usar y permite justamente esto que buscas. Y finalmente, una vez tengas tus datos como quieres, llegas a la etapa del análisis con alguna técnica estadística. Puedes empezar a utilizar una simple correlación temperatura, metros cuadrados afectados como inicialmente sugieres. Y de ahí dependiendo de resultados ir a algo más sofisticado (correlación de series temporales, etc). Saludos, Carlos Ortega www.qualityexcellence.es www.datanalytics.com/blog 2011/1/11 Paco Pastor <paco@ceam.es>> Hola a todos y gracias por vuestra ayuda. > > Con vuestros mensajes he podido crear la serie de tiempo regular. Copio > a continuación lo que he hecho por si a alguien le sirve algún día. > > library(zoo) > > # Datos de incendios > > idatos=read.csv("prova.csv", header=T,sep=",") # Lectura datos incendios > > ifecha=as.Date(idatos[,2],"%d/%m/%Y") # Fecha incendios con > formato as.Date > > idata=zoo(idatos[,3],ifecha) # Creación del > fichero de datos fecha,area (serie irregular) > > # Datos de temperatura > > tdatos=read.csv("7038.txt", header=T,sep=";") # Lectura datos temperatura > > tfecha=as.Date(tdatos[,4],"%d/%m/%Y") # Fecha incendios con > formato as.Date > > tdata=zoo(tdatos[,5],tfecha) # Creación del > fichero de datos fecha,temperatura (serie regular) > > # Mezcla de los datos de las series (NA=0) > > final.datos=merge(tdata,idata,fill=0) > > > Los datos de incendios tienen el formato: > > "idprov","date","area" > 43,07/01/1968,600 > 3,28/03/1968,125 > 46,13/07/1968,190 > 16,27/07/1968,540 > 3,29/07/1968,300 > 46,02/08/1968,120 > > y los de temperatura: > > 7038;LAGUNA DE TORREVIEJA;A;1/1/1968;18.0;8.0;-- > 7038;LAGUNA DE TORREVIEJA;A;2/1/1968;17.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;3/1/1968;21.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;4/1/1968;22.0;12.0;-- > 7038;LAGUNA DE TORREVIEJA;A;5/1/1968;21.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;6/1/1968;22.0;6.0;-- > 7038;LAGUNA DE TORREVIEJA;A;7/1/1968;20.0;13.0;-- > > Ahora me surge un nuevo problema. Mis conocimientos de R y estadística > son básicos (siendo generoso). Quiero buscar tendencias y correlaciones > entre temperatura e incendios, por lo que he estado leyendo voy a probar > algunas cosas con R pero me surge una duda sobre como tratar los datos. > > En el caso de la temperatura hay solamente un dato diario pero en los > incendios puede haber, de hecho hay, días con varios datos (varios > incendios en zonas diferentes con varios datos de área quemada). ¿Como > debo tratar los datos? He pensado reestructurar los datos de incendio de > forma que me queden dos valores diarios que serían número de incendios y > área total quemada (la suma de todos los incendios de ese día). Así > tendría dos variables para correlacionar con la temperatura. ¿Es > correcto analizar los datos así?¿tiene R la capacidad de hacer estos > análisis sin dividir los datos en dos subconjuntos? Supongo que mezclar > la serie de datos de temperatura con la de incendios puede darme > problemas cuando tenga dos o más registros de incendios en un mismo días. > > Bueno, gracias de antemano por vuestra ayuda y perdonad si estoy > abusando de la lista con tanta pregunta que quizá no es exactamente de R. > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco@ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 > > > > > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Paco, según entiendo, y de acuerdo con tu objetivo final, lo suyo sería más bien agregar los datos de la serie de incendios (nº de incendio al día y area diario quemado) y luego adjuntar la serie de temperatura. Algo así cómo, idatos=read.csv("prova.csv", header=TRUE, sep=",") # Lectura datos incendios idatos=cbind(idatos,N=1) # para contar el nº de incendios diario incendios=aggregate(idatos[,c("area","N")],by=list(fecha=idatos $date),FUN=sum) y luego juntar la serie "incendios" con la serie de temperatura. Un saludo. Olivier -- ____________________________________ Olivier G. Nuñez Email: onunez en iberstat.es Tel : +34 663 03 69 09 Web: http://www.iberstat.es ____________________________________ El 11/01/2011, a las 11:04, Paco Pastor escribió:> Hola a todos y gracias por vuestra ayuda. > > Con vuestros mensajes he podido crear la serie de tiempo regular. > Copio > a continuación lo que he hecho por si a alguien le sirve algún día. > > library(zoo) > > # Datos de incendios > > idatos=read.csv("prova.csv", header=T,sep=",") # Lectura datos > incendios > > ifecha=as.Date(idatos[,2],"%d/%m/%Y") # Fecha incendios > con formato as.Date > > idata=zoo(idatos[,3],ifecha) # > Creación del fichero de datos fecha,area (serie irregular) > > # Datos de temperatura > > tdatos=read.csv("7038.txt", header=T,sep=";") # Lectura datos > temperatura > > tfecha=as.Date(tdatos[,4],"%d/%m/%Y") # Fecha incendios > con formato as.Date > > tdata=zoo(tdatos[,5],tfecha) # > Creación del fichero de datos fecha,temperatura (serie regular) > > # Mezcla de los datos de las series (NA=0) > > final.datos=merge(tdata,idata,fill=0) > > > Los datos de incendios tienen el formato: > > "idprov","date","area" > 43,07/01/1968,600 > 3,28/03/1968,125 > 46,13/07/1968,190 > 16,27/07/1968,540 > 3,29/07/1968,300 > 46,02/08/1968,120 > > y los de temperatura: > > 7038;LAGUNA DE TORREVIEJA;A;1/1/1968;18.0;8.0;-- > 7038;LAGUNA DE TORREVIEJA;A;2/1/1968;17.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;3/1/1968;21.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;4/1/1968;22.0;12.0;-- > 7038;LAGUNA DE TORREVIEJA;A;5/1/1968;21.0;10.0;-- > 7038;LAGUNA DE TORREVIEJA;A;6/1/1968;22.0;6.0;-- > 7038;LAGUNA DE TORREVIEJA;A;7/1/1968;20.0;13.0;-- > > Ahora me surge un nuevo problema. Mis conocimientos de R y estadística > son básicos (siendo generoso). Quiero buscar tendencias y > correlaciones > entre temperatura e incendios, por lo que he estado leyendo voy a > probar > algunas cosas con R pero me surge una duda sobre como tratar los > datos. > > En el caso de la temperatura hay solamente un dato diario pero en los > incendios puede haber, de hecho hay, días con varios datos (varios > incendios en zonas diferentes con varios datos de área quemada). ¿Como > debo tratar los datos? He pensado reestructurar los datos de > incendio de > forma que me queden dos valores diarios que serían número de > incendios y > área total quemada (la suma de todos los incendios de ese día). Así > tendría dos variables para correlacionar con la temperatura. ¿Es > correcto analizar los datos así?¿tiene R la capacidad de hacer estos > análisis sin dividir los datos en dos subconjuntos? Supongo que > mezclar > la serie de datos de temperatura con la de incendios puede darme > problemas cuando tenga dos o más registros de incendios en un mismo > días. > > Bueno, gracias de antemano por vuestra ayuda y perdonad si estoy > abusando de la lista con tanta pregunta que quizá no es exactamente > de R. > > Paco > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco en ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 > > > > > > [[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
Gracias Olivier, tu solución me ha funcionado perfectamente. Ahora voy con la estadística :-)) Gracias también a Carlos El 12/01/2011 12:07, Olivier Nuñez escribió:> Paco, > > según entiendo, y de acuerdo con tu objetivo final, > lo suyo sería más bien agregar los datos de la serie de incendios (nº > de incendio al día y area diario quemado) y luego adjuntar la serie de > temperatura. > Algo así cómo, > > idatos=read.csv("prova.csv", header=TRUE, sep=",") # Lectura datos > incendios > idatos=cbind(idatos,N=1) # para contar el nº de incendios diario > incendios=aggregate(idatos[,c("area","N")],by=list(fecha=idatos$date),FUN=sum) > > > y luego juntar la serie "incendios" con la serie de temperatura. > Un saludo. Olivier > -- ____________________________________ > > Olivier G. Nuñez > Email: onunez en iberstat.es > Tel : +34 663 03 69 09 > Web: http://www.iberstat.es > > ____________________________________ > > > > > El 11/01/2011, a las 11:04, Paco Pastor escribió: > >> Hola a todos y gracias por vuestra ayuda. >> >> Con vuestros mensajes he podido crear la serie de tiempo regular. Copio >> a continuación lo que he hecho por si a alguien le sirve algún día. >> >> library(zoo) >> >> # Datos de incendios >> >> idatos=read.csv("prova.csv", header=T,sep=",") # Lectura datos >> incendios >> >> ifecha=as.Date(idatos[,2],"%d/%m/%Y") # Fecha incendios con >> formato as.Date >> >> idata=zoo(idatos[,3],ifecha) # Creación >> del fichero de datos fecha,area (serie irregular) >> >> # Datos de temperatura >> >> tdatos=read.csv("7038.txt", header=T,sep=";") # Lectura datos >> temperatura >> >> tfecha=as.Date(tdatos[,4],"%d/%m/%Y") # Fecha incendios con >> formato as.Date >> >> tdata=zoo(tdatos[,5],tfecha) # Creación >> del fichero de datos fecha,temperatura (serie regular) >> >> # Mezcla de los datos de las series (NA=0) >> >> final.datos=merge(tdata,idata,fill=0) >> >> >> Los datos de incendios tienen el formato: >> >> "idprov","date","area" >> 43,07/01/1968,600 >> 3,28/03/1968,125 >> 46,13/07/1968,190 >> 16,27/07/1968,540 >> 3,29/07/1968,300 >> 46,02/08/1968,120 >> >> y los de temperatura: >> >> 7038;LAGUNA DE TORREVIEJA;A;1/1/1968;18.0;8.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;2/1/1968;17.0;10.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;3/1/1968;21.0;10.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;4/1/1968;22.0;12.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;5/1/1968;21.0;10.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;6/1/1968;22.0;6.0;-- >> 7038;LAGUNA DE TORREVIEJA;A;7/1/1968;20.0;13.0;-- >> >> Ahora me surge un nuevo problema. Mis conocimientos de R y estadística >> son básicos (siendo generoso). Quiero buscar tendencias y correlaciones >> entre temperatura e incendios, por lo que he estado leyendo voy a probar >> algunas cosas con R pero me surge una duda sobre como tratar los datos. >> >> En el caso de la temperatura hay solamente un dato diario pero en los >> incendios puede haber, de hecho hay, días con varios datos (varios >> incendios en zonas diferentes con varios datos de área quemada). ¿Como >> debo tratar los datos? He pensado reestructurar los datos de incendio de >> forma que me queden dos valores diarios que serían número de incendios y >> área total quemada (la suma de todos los incendios de ese día). Así >> tendría dos variables para correlacionar con la temperatura. ¿Es >> correcto analizar los datos así?¿tiene R la capacidad de hacer estos >> análisis sin dividir los datos en dos subconjuntos? Supongo que mezclar >> la serie de datos de temperatura con la de incendios puede darme >> problemas cuando tenga dos o más registros de incendios en un mismo >> días. >> >> Bueno, gracias de antemano por vuestra ayuda y perdonad si estoy >> abusando de la lista con tanta pregunta que quizá no es exactamente >> de R. >> >> Paco >> >> -- >> ----------- >> Francisco Pastor >> Meteorology department, Instituto Universitario CEAM-UMH >> http://www.ceam.es >> ----------- >> mail: paco en ceam.es >> skype: paco.pastor.guzman >> Researcher ID: http://www.researcherid.com/rid/B-8331-2008 >> Cosis profile: http://www.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 >> >> >> >> >> >> [[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 > > >-- ----------- Francisco Pastor Meteorology department, Instituto Universitario CEAM-UMH http://www.ceam.es ----------- mail: paco en ceam.es skype: paco.pastor.guzman Researcher ID: http://www.researcherid.com/rid/B-8331-2008 Cosis profile: http://www.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
Carlos J. Gil Bellosta
2011-Jan-12 12:05 UTC
[R-es] Conversión de series de tiempo irregulares
Hola... Abundando en la solución de Olivier, usando el paquete reshape y en una única línea, idata <- data.frame( date = rep( letters[1:4], each = 3 ), area = 1:12 ) idata <- cast( idata, date ~ ., c(sum, length) ) Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 12 de enero de 2011 12:47, Paco Pastor <paco en ceam.es> escribió:> Gracias Olivier, tu solución me ha funcionado perfectamente. Ahora voy con > la estadística :-)) > > Gracias también a Carlos > > El 12/01/2011 12:07, Olivier Nuñez escribió: >> >> Paco, >> >> según entiendo, y de acuerdo con tu objetivo final, >> lo suyo sería más bien agregar los datos de la serie de incendios (nº de >> incendio al día y area diario quemado) y luego adjuntar la serie de >> temperatura. >> Algo así cómo, >> >> idatos=read.csv("prova.csv", header=TRUE, sep=",") # Lectura datos >> incendios >> idatos=cbind(idatos,N=1) # para contar el nº de incendios diario >> >> incendios=aggregate(idatos[,c("area","N")],by=list(fecha=idatos$date),FUN=sum) >> >> y luego juntar la serie "incendios" con la serie de temperatura. >> Un saludo. Olivier >> -- ____________________________________ >> >> Olivier G. Nuñez >> Email: onunez en iberstat.es >> Tel : +34 663 03 69 09 >> Web: http://www.iberstat.es >> >> ____________________________________ >> >> >> >> >> El 11/01/2011, a las 11:04, Paco Pastor escribió: >> >>> Hola a todos y gracias por vuestra ayuda. >>> >>> Con vuestros mensajes he podido crear la serie de tiempo regular. Copio >>> a continuación lo que he hecho por si a alguien le sirve algún día. >>> >>> library(zoo) >>> >>> # Datos de incendios >>> >>> idatos=read.csv("prova.csv", header=T,sep=",") # Lectura datos incendios >>> >>> ifecha=as.Date(idatos[,2],"%d/%m/%Y") # Fecha incendios con >>> formato as.Date >>> >>> idata=zoo(idatos[,3],ifecha) # Creación del >>> fichero de datos fecha,area (serie irregular) >>> >>> # Datos de temperatura >>> >>> tdatos=read.csv("7038.txt", header=T,sep=";") # Lectura datos >>> temperatura >>> >>> tfecha=as.Date(tdatos[,4],"%d/%m/%Y") # Fecha incendios con >>> formato as.Date >>> >>> tdata=zoo(tdatos[,5],tfecha) # Creación del >>> fichero de datos fecha,temperatura (serie regular) >>> >>> # Mezcla de los datos de las series (NA=0) >>> >>> final.datos=merge(tdata,idata,fill=0) >>> >>> >>> Los datos de incendios tienen el formato: >>> >>> "idprov","date","area" >>> 43,07/01/1968,600 >>> 3,28/03/1968,125 >>> 46,13/07/1968,190 >>> 16,27/07/1968,540 >>> 3,29/07/1968,300 >>> 46,02/08/1968,120 >>> >>> y los de temperatura: >>> >>> 7038;LAGUNA DE TORREVIEJA;A;1/1/1968;18.0;8.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;2/1/1968;17.0;10.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;3/1/1968;21.0;10.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;4/1/1968;22.0;12.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;5/1/1968;21.0;10.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;6/1/1968;22.0;6.0;-- >>> 7038;LAGUNA DE TORREVIEJA;A;7/1/1968;20.0;13.0;-- >>> >>> Ahora me surge un nuevo problema. Mis conocimientos de R y estadística >>> son básicos (siendo generoso). Quiero buscar tendencias y correlaciones >>> entre temperatura e incendios, por lo que he estado leyendo voy a probar >>> algunas cosas con R pero me surge una duda sobre como tratar los datos. >>> >>> En el caso de la temperatura hay solamente un dato diario pero en los >>> incendios puede haber, de hecho hay, días con varios datos (varios >>> incendios en zonas diferentes con varios datos de área quemada). ¿Como >>> debo tratar los datos? He pensado reestructurar los datos de incendio de >>> forma que me queden dos valores diarios que serían número de incendios y >>> área total quemada (la suma de todos los incendios de ese día). Así >>> tendría dos variables para correlacionar con la temperatura. ¿Es >>> correcto analizar los datos así?¿tiene R la capacidad de hacer estos >>> análisis sin dividir los datos en dos subconjuntos? Supongo que mezclar >>> la serie de datos de temperatura con la de incendios puede darme >>> problemas cuando tenga dos o más registros de incendios en un mismo días. >>> >>> Bueno, gracias de antemano por vuestra ayuda y perdonad si estoy >>> abusando de la lista con tanta pregunta que quizá no es exactamente de R. >>> >>> Paco >>> >>> -- >>> ----------- >>> Francisco Pastor >>> Meteorology department, Instituto Universitario CEAM-UMH >>> http://www.ceam.es >>> ----------- >>> mail: paco en ceam.es >>> skype: paco.pastor.guzman >>> Researcher ID: http://www.researcherid.com/rid/B-8331-2008 >>> Cosis profile: http://www.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 >>> >>> >>> >>> >>> >>> [[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 >> >> >> > > -- > ----------- > Francisco Pastor > Meteorology department, Instituto Universitario CEAM-UMH > http://www.ceam.es > ----------- > mail: paco en ceam.es > skype: paco.pastor.guzman > Researcher ID: http://www.researcherid.com/rid/B-8331-2008 > Cosis profile: http://www.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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >