Javier Marcuzzi
2016-May-17 21:19 UTC
[R-es] buscar y reemplazar tabs dentro de un archivo
Estimado Eric Las filas que faltan, ¿son filas enteras, donde todo es valor NA o ?? en un data.frame? Porque si es así podrías importar todo y luego buscar (filtrar) los que no son NA. Copio y pego un código que utilizo en un trabajo, posiblemente le sea útil. Tratamientos$Tratamiento[Tratamientos$Tratamiento == ""] <- NA # asignar NA a las celdas vacías Tratamientos<- Tratamientos[ !is.na(Tratamientos$Tratamiento),] #Solo dejo filas en las que las tratamiento son diferentes de cero Javier Rubén Marcuzzi De: ja palazon Enviado: martes, 17 de mayo de 2016 18:06 Para: r-help-es en r-project.org Asunto: Re: [R-es] buscar y reemplazar tabs dentro de un archivo Usa la función system para desde R usar las herramientas del sistema. On 17/05/16 16:13, eric wrote:> Hola Jose, muchas gracias por la sugerencia, no conocia la existencia > de "sed" ... yo preguntaba por la posibilidad de hacerlo con R mismo > para no tener que escribir algo en otro lenguaje, porque te refieres a > "sed" en linux, no ? y tambien por lo mucho mejor que es un script que > hacerlo a mano, considerando que son varios cientos de archivos ... > voy a probar con un script de bash a ver si me funciona. > > Muchas gracias a todos, > > Saludos, Eric. > > > > > > > > > > > On 05/15/2016 11:57 AM, JA Palazón wrote: >> Hola >> >> Lo más sencillo es utilizar sed, desde la línea de comandos: >> >> sed 's/^I^I/^I/g' ficheroOriginal.dat >ficheroCorregido.dat >> >> Alternativa: usa la hoja de cálculo de libre office te da >> la opción de eliminar repeticiones de separador de campos. >> >> Espero que te sirva >> >> El 14/05/16 a las 18:58, eric escribió: >>> Estimados, tengo el siguiente problema: >>> >>> tengo muchos archivos (algunos cientos) con columnas de datos >>> separados por \tab y al importar en R me di cuenta que me faltaban >>> algunas filas ... despues de 3 dias dandole vueltas al problema >>> encontre que las filas que faltaban tenian un doble \tab en alguna >>> columna >>> >>> Luego la pregunta es: >>> >>> existe alguna forma de importar los archivos de modo que el doble \tab >>> no produzca errores o >>> >>> existe alguna forma de "abrir" los archivos sin importarlos en R (pero >>> con R), buscar y reemplazar ese doble \tab para luego importar >>> >>> Saludos y muchas gracias, >>> >>> Eric, >>> >>> >>> >>> >> >_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Muchas gracias Javier ... cuando hay un doble \teb\teb desaparece la fila completa al importar el archivo a un data.frame, por eso queria modificarlo antes de importar el archivo, o pensaba que quiza habia una funcion robusta para importar, que no fuera afectada por el doble tab muchas gracias por su sugerencia, Saludos, Eric. On 05/17/2016 11:19 PM, Javier Marcuzzi wrote:> Estimado Eric > > Las filas que faltan, ¿son filas enteras, donde todo es valor NA o ?? en un data.frame? > > Porque si es así podrías importar todo y luego buscar (filtrar) los que no son NA. > > Copio y pego un código que utilizo en un trabajo, posiblemente le sea útil. > > Tratamientos$Tratamiento[Tratamientos$Tratamiento == ""] <- NA # asignar NA a las celdas vacías > Tratamientos<- Tratamientos[ !is.na(Tratamientos$Tratamiento),] #Solo dejo filas en las que las tratamiento son diferentes de cero > > Javier Rubén Marcuzzi > > De: ja palazon > Enviado: martes, 17 de mayo de 2016 18:06 > Para: r-help-es en r-project.org > Asunto: Re: [R-es] buscar y reemplazar tabs dentro de un archivo > > Usa la función system para desde R usar las herramientas del sistema. > > On 17/05/16 16:13, eric wrote: >> Hola Jose, muchas gracias por la sugerencia, no conocia la existencia >> de "sed" ... yo preguntaba por la posibilidad de hacerlo con R mismo >> para no tener que escribir algo en otro lenguaje, porque te refieres a >> "sed" en linux, no ? y tambien por lo mucho mejor que es un script que >> hacerlo a mano, considerando que son varios cientos de archivos ... >> voy a probar con un script de bash a ver si me funciona. >> >> Muchas gracias a todos, >> >> Saludos, Eric. >> >> >> >> >> >> >> >> >> >> >> On 05/15/2016 11:57 AM, JA Palazón wrote: >>> Hola >>> >>> Lo más sencillo es utilizar sed, desde la línea de comandos: >>> >>> sed 's/^I^I/^I/g' ficheroOriginal.dat >ficheroCorregido.dat >>> >>> Alternativa: usa la hoja de cálculo de libre office te da >>> la opción de eliminar repeticiones de separador de campos. >>> >>> Espero que te sirva >>> >>> El 14/05/16 a las 18:58, eric escribió: >>>> Estimados, tengo el siguiente problema: >>>> >>>> tengo muchos archivos (algunos cientos) con columnas de datos >>>> separados por \tab y al importar en R me di cuenta que me faltaban >>>> algunas filas ... despues de 3 dias dandole vueltas al problema >>>> encontre que las filas que faltaban tenian un doble \tab en alguna >>>> columna >>>> >>>> Luego la pregunta es: >>>> >>>> existe alguna forma de importar los archivos de modo que el doble \tab >>>> no produzca errores o >>>> >>>> existe alguna forma de "abrir" los archivos sin importarlos en R (pero >>>> con R), buscar y reemplazar ese doble \tab para luego importar >>>> >>>> Saludos y muchas gracias, >>>> >>>> Eric, >>>> >>>> >>>> >>>> >>> >> > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > 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 >-- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.
Hola, Además de la solución de modificar el fichero antes de procesarlo en R usando comando Unix/Linux del sistema, puedes probar a hacerlo todo en "R" con otras funciones de lectura de otros paquetes. Mira este ejemplo: En un fichero "Myfile.txt" tengo las siguientes líneas con algunas "trampas": #--------------- DeployID Date.Time LocationQuality Latitude Longitude STM05-1 2005/02/28 17:35 Good -35.562 177.158 STM05-1 2005/02/28 19:44 Good -35.487 177.129 STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 STM05-1 2005/03/01 07:28 Unknown -34.978 177.268 STM05-1 2005/03/01 18:06 Poor -34.799 177.027 STM05-1 2005/03/01 18:47 Poor -34.85 177.059 STM05-2 2005/02/28 12:49 Good -35.928 177.328 STM05-2 2005/02/28 21:23 Poor -35.926 177.314 #--------------- - En la segunda línea entre SMT05-1 y 2005... hay varios espacios y varios tabuladores. - En la tercera línea entre STM05-1 y 2005, hay dos tabuladores - En la quinta línea entre la fecha y 07:28 hay dos/tres tabuladores... Mira lo que son capaces de hacer estas funciones:> library(data.table) > fread("Myfile.txt")V1 V2 V3 V4 V5 V6 1: STM05-1 2005/02/28 17:35 Good -35.562 177.158 2: STM05-1 2005/02/28 19:44 Good -35.487 177.129 3: STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 4: STM05-1 2005/03/01 07:28 Unknown -34.978 177.268 5: STM05-1 2005/03/01 18:06 Poor -34.799 177.027 6: STM05-1 2005/03/01 18:47 Poor -34.850 177.059 7: STM05-2 2005/02/28 12:49 Good -35.928 177.328 8: STM05-2 2005/02/28 21:23 Poor -35.926 177.314 Warning message: In fread("Myfile.txt") : Starting data input on line 2 and discarding line 1 because it has too few or too many items to be column names or data: DeployID Date.Time LocationQuality Latitude Longitude> library(readr) > read_table("Myfile.txt")DeployID Date.Time LocationQuality Latitude Longitude 1 STM05-1 2005/02/28 17:35 Good -35.562 177.158 2 STM05-1 2005/02/28 19:44 Good -35.487 177.129 3 STM05-1 2005/02/28 23:01 Unknown -35.399 177.064 4 STM05-1 2005/03/01 07:28 Unknown -34.978 5 STM05-1 2005/03/01 18:06 Poor -34.799 177.027 6 STM05-1 2005/03/01 18:47 Poor -34.85 177.059 7 STM05-2 2005/02/28 12:49 Good -35.928 177.328 8 STM05-2 2005/02/28 21:23 Poor -35.926 177.314 La función "fread()" del paquete data.table avisa de un posible error con la cabecera, pero ignora todas las trampas que hemos puesto y crea las columnas donde corresponde. Y como cabecera pone directamente "V1", "V2",.... Mientras que "read_table" ni avisa, e incluye la cabecera y las líneas con las trampas. La solución "fread()" puede servirte tal cual. Mientras que read_table podría ayudarte pero exigiría que luego la salida como data.frame la post-procesaras... Cuidado con "fread()" que la salida es un data.table y data.frame. Mi consejo sería que a la salida de fread() la convirtieras a un data.frame puro con "as.data.frame()" para no tener problemas. Salvo que el resto de tu código lo quieras hacer con la sintaxis de data.table. Gracias, Carlos Ortega www.qualityexcellence.es El 18 de mayo de 2016, 10:02, eric <ericconchamunoz en gmail.com> escribió:> Muchas gracias Javier ... cuando hay un doble \teb\teb desaparece la fila > completa al importar el archivo a un data.frame, por eso queria modificarlo > antes de importar el archivo, o pensaba que quiza habia una funcion robusta > para importar, que no fuera afectada por el doble tab > > muchas gracias por su sugerencia, > > Saludos, Eric. > > > > > > > On 05/17/2016 11:19 PM, Javier Marcuzzi wrote: > >> Estimado Eric >> >> Las filas que faltan, ¿son filas enteras, donde todo es valor NA o ?? en >> un data.frame? >> >> Porque si es así podrías importar todo y luego buscar (filtrar) los que >> no son NA. >> >> Copio y pego un código que utilizo en un trabajo, posiblemente le sea >> útil. >> >> Tratamientos$Tratamiento[Tratamientos$Tratamiento == ""] <- NA # asignar >> NA a las celdas vacías >> Tratamientos<- Tratamientos[ !is.na(Tratamientos$Tratamiento),] #Solo >> dejo filas en las que las tratamiento son diferentes de cero >> >> Javier Rubén Marcuzzi >> >> De: ja palazon >> Enviado: martes, 17 de mayo de 2016 18:06 >> Para: r-help-es en r-project.org >> Asunto: Re: [R-es] buscar y reemplazar tabs dentro de un archivo >> >> Usa la función system para desde R usar las herramientas del sistema. >> >> On 17/05/16 16:13, eric wrote: >> >>> Hola Jose, muchas gracias por la sugerencia, no conocia la existencia >>> de "sed" ... yo preguntaba por la posibilidad de hacerlo con R mismo >>> para no tener que escribir algo en otro lenguaje, porque te refieres a >>> "sed" en linux, no ? y tambien por lo mucho mejor que es un script que >>> hacerlo a mano, considerando que son varios cientos de archivos ... >>> voy a probar con un script de bash a ver si me funciona. >>> >>> Muchas gracias a todos, >>> >>> Saludos, Eric. >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On 05/15/2016 11:57 AM, JA Palazón wrote: >>> >>>> Hola >>>> >>>> Lo más sencillo es utilizar sed, desde la línea de comandos: >>>> >>>> sed 's/^I^I/^I/g' ficheroOriginal.dat >ficheroCorregido.dat >>>> >>>> Alternativa: usa la hoja de cálculo de libre office te da >>>> la opción de eliminar repeticiones de separador de campos. >>>> >>>> Espero que te sirva >>>> >>>> El 14/05/16 a las 18:58, eric escribió: >>>> >>>>> Estimados, tengo el siguiente problema: >>>>> >>>>> tengo muchos archivos (algunos cientos) con columnas de datos >>>>> separados por \tab y al importar en R me di cuenta que me faltaban >>>>> algunas filas ... despues de 3 dias dandole vueltas al problema >>>>> encontre que las filas que faltaban tenian un doble \tab en alguna >>>>> columna >>>>> >>>>> Luego la pregunta es: >>>>> >>>>> existe alguna forma de importar los archivos de modo que el doble \tab >>>>> no produzca errores o >>>>> >>>>> existe alguna forma de "abrir" los archivos sin importarlos en R (pero >>>>> con R), buscar y reemplazar ese doble \tab para luego importar >>>>> >>>>> Saludos y muchas gracias, >>>>> >>>>> Eric, >>>>> >>>>> >>>>> >>>>> >>>>> >>>> >>> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> 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 >> >> > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > 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]]