Tengo un archivo csv que tiene 7 columnas. Tiene celdas vacías y algunos espacios entre celdas. ¿Cómo puedo reemplazar las celdas vacías con NA y eliminar espacios adicionales? ¡Muchas gracias!
Así es como se ve mi archivo, pero aquí parece deformarse cuando lo copio y lo pego.
130070078,PPW0001,1,4,4HW ,2,15.61943874
120040039,PPW0002,0,0, ,0,0
120040043,PPW0003,1,3,3WE ,1,14.43394935
foo,"bar, baz",bar
- que tiene dos celdas:foo
,bar, baz
ybar
) no es fácil de analizar (y modificar) consed
oawk
.Respuestas:
Usar
sed
eso también funcionará para campos vacíos repetidos:O usando
awk
:fuente
Tu respuesta:
Para obtener 'NA' en el último campo si está en blanco:
También puedes usar:
fuente
La respuesta de αғsнιη funcionó para mí, pero me gustaría explicarlo un poco.
Estaba intentando algo como esto:
Que salidas
Debido a los campos vacíos repetidos, la última coma es parte del primer reemplazo y el comienzo del siguiente reemplazo deseado, por lo que solo se reemplaza cada segundo campo vacío.
Ahora podrías hacer algo como:
o
Lo que reemplazará todas las celdas, ya que el segundo comando obtendrá las que se pierden, pero es un poco desordenado.
El comando de αғsнιη hace esencialmente lo mismo, usando una etiqueta y un salto, que no sabía que pudieras hacer.
salida:
Entonces, la primera parte del comando crea una etiqueta.
Entonces tenemos la misma sustitución.
Luego tenemos el comando t que significa saltar a la etiqueta si el comando de sustitución anterior fue exitoso.
Más información: http://www.grymoire.com/Unix/Sed.html#uh-59
fuente