Saludos, Joan. Dale una mirada a la biblioteca R llamada xlsconnect.
César Escalante <div>-------- Mensaje original --------</div><div>De: r-help-es-requ...@r-project.org </div><div>Fecha:07/28/2016 3:41 PM (GMT-04:00) </div><div>A: r-help-es@r-project.org </div><div>Asunto: Resumen de R-help-es, Vol 89, Envío 36 </div><div> </div>Envíe los mensajes para la lista R-help-es a r-help-es@r-project.org Para subscribirse o anular su subscripción a través de la WEB https://stat.ethz.ch/mailman/listinfo/r-help-es O por correo electrónico, enviando un mensaje con el texto "help" en el asunto (subject) o en el cuerpo a: r-help-es-requ...@r-project.org Puede contactar con el responsable de la lista escribiendo a: r-help-es-ow...@r-project.org Si responde a algún contenido de este mensaje, por favor, edite la linea del asunto (subject) para que el texto sea mas especifico que: "Re: Contents of R-help-es digest...". Además, por favor, incluya en la respuesta sólo aquellas partes del mensaje a las que está respondiendo. Asuntos del día: 1. Eliminar filas al principio y final de un .csv en R (Joan Giménez Verdugo) 2. Re: Eliminar filas al principio y final de un .csv en R (Carlos Ortega) 3. Re: Eliminar filas al principio y final de un .csv en R (Joan Giménez Verdugo) 4. Re: Eliminar filas al principio y final de un .csv en R (Carlos Ortega) 5. Re: Eliminar filas al principio y final de un .csv en R (Joan Giménez Verdugo) ---------------------------------------------------------------------- Message: 1 Date: Thu, 28 Jul 2016 13:53:55 +0200 From: Joan Giménez Verdugo <joan.gime...@csic.es> To: r-help-es@r-project.org Subject: [R-es] Eliminar filas al principio y final de un .csv en R Message-ID: <caa5n2ct2poo7gf0sghsdjkdydtxy5sm-yhrx2vs7835spje...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Hola a todos, tengo 170 .csv donde tengo que eliminar las primeras 20 lineas (primer bloque) y luego todo un último bloque de datos (tercer bloque) que está separado por dos filas sin datos del segundo bloque (que es el que me interesa). El tercer bloque empieza en cada .csv en una linea diferente por lo tanto no se si puedo automatizar en R quedarme tan solo con la información a partir de la linea 21 y luego solo hasta la siguiente linea en blanco que es donde empieza el tercer bloque (que será diferente en cada .csv). Muchas gracias de antemano. Joan -- *Joan Giménez Verdugo* *PhD Student* *Severo Ochoa* Estación Biológica de Doñana (EBD-CSIC) Department of Conservation Biology Americo Vespucio Ave, s/n 41092 Sevilla (Spain) www.ebd.csic.es --- Research Gate: Joan Giménez <https://www.researchgate.net/profile/Joan_Gimenez2> Phone: +34 619 176 849 ü Please consider the environment before printing this E-mail [[alternative HTML version deleted]] ------------------------------ Message: 2 Date: Thu, 28 Jul 2016 17:00:34 +0200 From: Carlos Ortega <c...@qualityexcellence.es> To: Joan Giménez Verdugo <joan.gime...@csic.es> Cc: Lista R <r-help-es@r-project.org> Subject: Re: [R-es] Eliminar filas al principio y final de un .csv en R Message-ID: <CAOKbq8iDw2Me2C+vd=S+yZvR5M0V1W=86=yof0jk_cmsr5j...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Hola, Se me ocurre esta solución en pseudo-código...: 1. Coges el primer fichero para procesar. 2. Con read.table indicas que salte esas primeras 20 líneas. Hay un parámetro que permite hacer esto (skip). 3. Cargas todo el fichero restante. 4. Identificas el data.frame donde están esas líneas en blanco que separan el segundo del tercer bloque. 5. Borras todo lo que está por debajo de esas líneas, quedándote ya con el bloque dos. 6. Guardo en un data.frame temporal el bloque dos. 7. Vuelvo al principio cogiendo otro fichero y aplicando la misma lógica y al llegar al punto 6 añado al data.frame temporal el nuevo segundo bloque. Si trabajas sobre Linux/Mac puedes hacer todo esto en una shell, con algo como "awk". Saltas las primeras 20 líneas en blanco, lees las líneas siguientes del fichero hasta que te encuentras una línea en blanco, donde paras el bucle y guardas en un fichero el bloque dos. Vuelves a iterar en el bucle y al encontrar nuevamente la línea en blanco, salvas (añadiendo) las líneas en el fichero anterior. Saludos, Carlos Ortega www.qualityexcellence.es El 28 de julio de 2016, 13:53, Joan Giménez Verdugo <joan.gime...@csic.es> escribió: > Hola a todos, > > tengo 170 .csv donde tengo que eliminar las primeras 20 lineas (primer > bloque) y luego todo un último bloque de datos (tercer bloque) que está > separado por dos filas sin datos del segundo bloque (que es el que me > interesa). El tercer bloque empieza en cada .csv en una linea diferente por > lo tanto no se si puedo automatizar en R quedarme tan solo con la > información a partir de la linea 21 y luego solo hasta la siguiente linea > en blanco que es donde empieza el tercer bloque (que será diferente en cada > .csv). > > Muchas gracias de antemano. > > Joan > > -- > *Joan Giménez Verdugo* > *PhD Student* *Severo Ochoa* > Estación Biológica de Doñana (EBD-CSIC) > Department of Conservation Biology > Americo Vespucio Ave, s/n > 41092 Sevilla (Spain) > www.ebd.csic.es > --- > Research Gate: Joan Giménez > <https://www.researchgate.net/profile/Joan_Gimenez2> > Phone: +34 619 176 849 > ü Please consider the environment before printing this E-mail > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ------------------------------ Message: 3 Date: Thu, 28 Jul 2016 18:07:11 +0200 From: Joan Giménez Verdugo <joan.gime...@csic.es> To: Carlos Ortega <c...@qualityexcellence.es>, r-help-es@r-project.org Subject: Re: [R-es] Eliminar filas al principio y final de un .csv en R Message-ID: <CAA5N2CTbOD1SmoViOX1n8M_KDDX7tNg-UO=bt-dgte3ac1j...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Muchas gracias Carlos, la lógica es perfecta pero no se como identificar con código las lineas en blanco entre el bloque 2 y el bloque 3. Para de esta forma quedarme solo con el bloque 2. Tienes alguna idea? Muchas gracias. Joan 2016-07-28 17:00 GMT+02:00 Carlos Ortega <c...@qualityexcellence.es>: > Hola, > > Se me ocurre esta solución en pseudo-código...: > > > 1. Coges el primer fichero para procesar. > 2. Con read.table indicas que salte esas primeras 20 líneas. Hay un > parámetro que permite hacer esto (skip). > 3. Cargas todo el fichero restante. > 4. Identificas el data.frame donde están esas líneas en blanco que > separan el segundo del tercer bloque. > 5. Borras todo lo que está por debajo de esas líneas, quedándote ya > con el bloque dos. > 6. Guardo en un data.frame temporal el bloque dos. > 7. Vuelvo al principio cogiendo otro fichero y aplicando la misma > lógica y al llegar al punto 6 añado al data.frame temporal el nuevo segundo > bloque. > > Si trabajas sobre Linux/Mac puedes hacer todo esto en una shell, con algo > como "awk". Saltas las primeras 20 líneas en blanco, lees las líneas > siguientes del fichero hasta que te encuentras una línea en blanco, donde > paras el bucle y guardas en un fichero el bloque dos. Vuelves a iterar en > el bucle y al encontrar nuevamente la línea en blanco, salvas (añadiendo) > las líneas en el fichero anterior. > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > > El 28 de julio de 2016, 13:53, Joan Giménez Verdugo <joan.gime...@csic.es> > escribió: > >> Hola a todos, >> >> tengo 170 .csv donde tengo que eliminar las primeras 20 lineas (primer >> bloque) y luego todo un último bloque de datos (tercer bloque) que está >> separado por dos filas sin datos del segundo bloque (que es el que me >> interesa). El tercer bloque empieza en cada .csv en una linea diferente >> por >> lo tanto no se si puedo automatizar en R quedarme tan solo con la >> información a partir de la linea 21 y luego solo hasta la siguiente linea >> en blanco que es donde empieza el tercer bloque (que será diferente en >> cada >> .csv). >> >> Muchas gracias de antemano. >> >> Joan >> >> -- >> *Joan Giménez Verdugo* >> *PhD Student* *Severo Ochoa* >> Estación Biológica de Doñana (EBD-CSIC) >> Department of Conservation Biology >> Americo Vespucio Ave, s/n >> 41092 Sevilla (Spain) >> www.ebd.csic.es >> --- >> Research Gate: Joan Giménez >> <https://www.researchgate.net/profile/Joan_Gimenez2> >> Phone: +34 619 176 849 >> ü Please consider the environment before printing this E-mail >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > -- *Joan Giménez Verdugo* *PhD Student* *Severo Ochoa* Estación Biológica de Doñana (EBD-CSIC) Department of Conservation Biology Americo Vespucio Ave, s/n 41092 Sevilla (Spain) www.ebd.csic.es --- Research Gate: Joan Giménez <https://www.researchgate.net/profile/Joan_Gimenez2> Phone: +34 619 176 849 ü Please consider the environment before printing this E-mail [[alternative HTML version deleted]] ------------------------------ Message: 4 Date: Thu, 28 Jul 2016 18:53:55 +0200 From: Carlos Ortega <c...@qualityexcellence.es> To: Joan Giménez Verdugo <joan.gime...@csic.es> Cc: Lista R <r-help-es@r-project.org> Subject: Re: [R-es] Eliminar filas al principio y final de un .csv en R Message-ID: <caokbq8gnwbnjbchrz9qvwz3igjyhmcxxhes9lvaqyqfmb9e...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Hola, Esta es una forma: #--------------------------- df <- data.frame( x = c(1:10, NA, NA, 11:20), y = c(letters[1:10], NA, NA, letters[11:20] ) ) df first_bad <- which(is.na(df), arr.ind = TRUE)[1,1] sub_df <- df[1:(first_bad - 1), ] #--------------------------- En este ejemplo, ya se parte de la eliminación de las 20 primeras líneas. Por tanto el bloque segundo, es el que aparece entre la primera línea y la primera línea en la que aparecen los NAs (fila 11). Detecto que la fila 11 es la que tiene los NAs (el resultado está en "first_bad"). Y teniendo esto, selecciono un subconjunto del "df" (donde estaba todo, bloque dos y el tres), entre la primera fila y "first_bad". Saludos, Carlos Ortega www.qualityexcellence.es El 28 de julio de 2016, 18:07, Joan Giménez Verdugo <joan.gime...@csic.es> escribió: > Muchas gracias Carlos, > > la lógica es perfecta pero no se como identificar con código las lineas en > blanco entre el bloque 2 y el bloque 3. Para de esta forma quedarme solo > con el bloque 2. > > Tienes alguna idea? > > Muchas gracias. > > Joan > > 2016-07-28 17:00 GMT+02:00 Carlos Ortega <c...@qualityexcellence.es>: > >> Hola, >> >> Se me ocurre esta solución en pseudo-código...: >> >> >> 1. Coges el primer fichero para procesar. >> 2. Con read.table indicas que salte esas primeras 20 líneas. Hay un >> parámetro que permite hacer esto (skip). >> 3. Cargas todo el fichero restante. >> 4. Identificas el data.frame donde están esas líneas en blanco que >> separan el segundo del tercer bloque. >> 5. Borras todo lo que está por debajo de esas líneas, quedándote ya >> con el bloque dos. >> 6. Guardo en un data.frame temporal el bloque dos. >> 7. Vuelvo al principio cogiendo otro fichero y aplicando la misma >> lógica y al llegar al punto 6 añado al data.frame temporal el nuevo >> segundo >> bloque. >> >> Si trabajas sobre Linux/Mac puedes hacer todo esto en una shell, con algo >> como "awk". Saltas las primeras 20 líneas en blanco, lees las líneas >> siguientes del fichero hasta que te encuentras una línea en blanco, donde >> paras el bucle y guardas en un fichero el bloque dos. Vuelves a iterar en >> el bucle y al encontrar nuevamente la línea en blanco, salvas (añadiendo) >> las líneas en el fichero anterior. >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> >> El 28 de julio de 2016, 13:53, Joan Giménez Verdugo <joan.gime...@csic.es >> > escribió: >> >>> Hola a todos, >>> >>> tengo 170 .csv donde tengo que eliminar las primeras 20 lineas (primer >>> bloque) y luego todo un último bloque de datos (tercer bloque) que está >>> separado por dos filas sin datos del segundo bloque (que es el que me >>> interesa). El tercer bloque empieza en cada .csv en una linea diferente >>> por >>> lo tanto no se si puedo automatizar en R quedarme tan solo con la >>> información a partir de la linea 21 y luego solo hasta la siguiente linea >>> en blanco que es donde empieza el tercer bloque (que será diferente en >>> cada >>> .csv). >>> >>> Muchas gracias de antemano. >>> >>> Joan >>> >>> -- >>> *Joan Giménez Verdugo* >>> *PhD Student* *Severo Ochoa* >>> Estación Biológica de Doñana (EBD-CSIC) >>> Department of Conservation Biology >>> Americo Vespucio Ave, s/n >>> 41092 Sevilla (Spain) >>> www.ebd.csic.es >>> --- >>> Research Gate: Joan Giménez >>> <https://www.researchgate.net/profile/Joan_Gimenez2> >>> Phone: +34 619 176 849 >>> ü Please consider the environment before printing this E-mail >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > > > > -- > *Joan Giménez Verdugo* > *PhD Student* *Severo Ochoa* > Estación Biológica de Doñana (EBD-CSIC) > Department of Conservation Biology > Americo Vespucio Ave, s/n > 41092 Sevilla (Spain) > www.ebd.csic.es > --- > Research Gate: Joan Giménez > <https://www.researchgate.net/profile/Joan_Gimenez2> > Phone: +34 619 176 849 > ü Please consider the environment before printing this E-mail > > > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ------------------------------ Message: 5 Date: Thu, 28 Jul 2016 21:40:54 +0200 From: Joan Giménez Verdugo <joan.gime...@csic.es> To: Carlos Ortega <c...@qualityexcellence.es> Cc: Lista R <r-help-es@r-project.org> Subject: Re: [R-es] Eliminar filas al principio y final de un .csv en R Message-ID: <caa5n2crnku9jrvvpzbu-hqkf7uxz2tic4_8ap+n7a2sd-2j...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Muchas gracias Carlos. funciona de maravilla. He hecho un bucle y ya tengo todos mis dataframes listos en un momento. El bucle me ha quedado de la siguiente manera: #Cargar datos setwd("path") #hago una lista de todos los ficheros que quiero transformar csv<-list.files("path") #Bucle para hacerlo especie por especie for(i in 1:length(csv)) { print(i) # Me quito las primeras 24 lineas que no me interesan y relleno con NA el resto de huecos mydata <- read.table(file=paste("path",csv[i], sep=""), header=F, sep=",", skip=24,fill=T, na.strings= c("999", "NA", " ", "")) #encuentro donde está el primer NA first_bad <- which(is.na(mydata), arr.ind = TRUE)[1,1] #me quedo con los datos hasta el primer NA sub_df <- mydata[1:(first_bad - 1), ] #Guardo el csv nuevo write.table(sub_df, file =paste("path", csv[i], sep=""), sep = ",", na = "NA", dec = ".", col.names = F, row.names=F) } 2016-07-28 18:53 GMT+02:00 Carlos Ortega <c...@qualityexcellence.es>: > Hola, > > Esta es una forma: > > #--------------------------- > > df <- data.frame( > x = c(1:10, NA, NA, 11:20), > y = c(letters[1:10], NA, NA, letters[11:20] ) > ) > df > > first_bad <- which(is.na(df), arr.ind = TRUE)[1,1] > sub_df <- df[1:(first_bad - 1), ] > > #--------------------------- > > En este ejemplo, ya se parte de la eliminación de las 20 primeras líneas. > > Por tanto el bloque segundo, es el que aparece entre la primera línea y la > primera línea en la que aparecen los NAs (fila 11). Detecto que la fila 11 > es la que tiene los NAs (el resultado está en "first_bad"). Y teniendo > esto, selecciono un subconjunto del "df" (donde estaba todo, bloque dos y > el tres), entre la primera fila y "first_bad". > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 28 de julio de 2016, 18:07, Joan Giménez Verdugo <joan.gime...@csic.es> > escribió: > >> Muchas gracias Carlos, >> >> la lógica es perfecta pero no se como identificar con código las lineas >> en blanco entre el bloque 2 y el bloque 3. Para de esta forma quedarme solo >> con el bloque 2. >> >> Tienes alguna idea? >> >> Muchas gracias. >> >> Joan >> >> 2016-07-28 17:00 GMT+02:00 Carlos Ortega <c...@qualityexcellence.es>: >> >>> Hola, >>> >>> Se me ocurre esta solución en pseudo-código...: >>> >>> >>> 1. Coges el primer fichero para procesar. >>> 2. Con read.table indicas que salte esas primeras 20 líneas. Hay un >>> parámetro que permite hacer esto (skip). >>> 3. Cargas todo el fichero restante. >>> 4. Identificas el data.frame donde están esas líneas en blanco que >>> separan el segundo del tercer bloque. >>> 5. Borras todo lo que está por debajo de esas líneas, quedándote ya >>> con el bloque dos. >>> 6. Guardo en un data.frame temporal el bloque dos. >>> 7. Vuelvo al principio cogiendo otro fichero y aplicando la misma >>> lógica y al llegar al punto 6 añado al data.frame temporal el nuevo >>> segundo >>> bloque. >>> >>> Si trabajas sobre Linux/Mac puedes hacer todo esto en una shell, con >>> algo como "awk". Saltas las primeras 20 líneas en blanco, lees las líneas >>> siguientes del fichero hasta que te encuentras una línea en blanco, donde >>> paras el bucle y guardas en un fichero el bloque dos. Vuelves a iterar en >>> el bucle y al encontrar nuevamente la línea en blanco, salvas (añadiendo) >>> las líneas en el fichero anterior. >>> >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> >>> >>> El 28 de julio de 2016, 13:53, Joan Giménez Verdugo < >>> joan.gime...@csic.es> escribió: >>> >>>> Hola a todos, >>>> >>>> tengo 170 .csv donde tengo que eliminar las primeras 20 lineas (primer >>>> bloque) y luego todo un último bloque de datos (tercer bloque) que está >>>> separado por dos filas sin datos del segundo bloque (que es el que me >>>> interesa). El tercer bloque empieza en cada .csv en una linea diferente >>>> por >>>> lo tanto no se si puedo automatizar en R quedarme tan solo con la >>>> información a partir de la linea 21 y luego solo hasta la siguiente >>>> linea >>>> en blanco que es donde empieza el tercer bloque (que será diferente en >>>> cada >>>> .csv). >>>> >>>> Muchas gracias de antemano. >>>> >>>> Joan >>>> >>>> -- >>>> *Joan Giménez Verdugo* >>>> *PhD Student* *Severo Ochoa* >>>> Estación Biológica de Doñana (EBD-CSIC) >>>> Department of Conservation Biology >>>> Americo Vespucio Ave, s/n >>>> 41092 Sevilla (Spain) >>>> www.ebd.csic.es >>>> --- >>>> Research Gate: Joan Giménez >>>> <https://www.researchgate.net/profile/Joan_Gimenez2> >>>> Phone: +34 619 176 849 >>>> ü Please consider the environment before printing this E-mail >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> _______________________________________________ >>>> R-help-es mailing list >>>> R-help-es@r-project.org >>>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>>> >>> >>> >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >> >> >> >> -- >> *Joan Giménez Verdugo* >> *PhD Student* *Severo Ochoa* >> Estación Biológica de Doñana (EBD-CSIC) >> Department of Conservation Biology >> Americo Vespucio Ave, s/n >> 41092 Sevilla (Spain) >> www.ebd.csic.es >> --- >> Research Gate: Joan Giménez >> <https://www.researchgate.net/profile/Joan_Gimenez2> >> Phone: +34 619 176 849 >> ü Please consider the environment before printing this E-mail >> >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > -- *Joan Giménez Verdugo* *PhD Student* *Severo Ochoa* Estación Biológica de Doñana (EBD-CSIC) Department of Conservation Biology Americo Vespucio Ave, s/n 41092 Sevilla (Spain) www.ebd.csic.es --- Research Gate: Joan Giménez <https://www.researchgate.net/profile/Joan_Gimenez2> Phone: +34 619 176 849 ü Please consider the environment before printing this E-mail [[alternative HTML version deleted]] ------------------------------ Subject: Pié de página del digest _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es ------------------------------ Fin de Resumen de R-help-es, Vol 89, Envío 36 ********************************************* [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es