[R-es] Eliminar filas al principio y final de un .csv en R

Carlos Ortega cof en qualityexcellence.es
Jue Jul 28 18:53:55 CEST 2016


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.gimenez en 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 <cof en 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.gimenez en 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 en 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]]



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