Tengo un archivo CSV del cual me gustaría extraer algunos datos: para cada valor distinto en una columna, me gustaría calcular la suma de los valores correspondientes en otra columna. Eventualmente, puedo hacerlo en Python, pero creo que podría haber una solución simple usando awk
.Awk suma condicional de un archivo CSV
Este podría ser el archivo CSV:
2 1:2010-1-bla:bla 1.6
2 2:2010-1-bla:bla 1.1
2 2:2010-1-bla:bla 3.4
2 3:2010-1-bla:bla -1.3
2 3:2010-1-bla:bla 6.0
2 3:2010-1-bla:bla 1.1
2 4:2010-1-bla:bla -1.0
2 5:2010-1-bla:bla 10.9
me gustaría llegar:
1 1.6
2 4.5
3 5.8
4 -1.0
5 10.9
Por ahora, sólo puedo extraer:
a) el valores de la primera columna:
awk -F ' ' '{print $(2)}' MyFile.csv | awk -F ':' '{print $(1)}'
y luego sale:
1
2
2
3
3
3
4
5
b) y los valores es igual a, por ejemplo, 1.1
en la última columna con:
awk -F ' ' '{print $(NF)}' MyFile.csv | awk '$1 == 1.1'
y luego:
1.1
1.1
No puedo extraer simultáneamente las columnas que me interesan, lo cual puede ayudarme al final. Aquí es un ejemplo de salida que puede aliviar el cálculo de las sumas (no sé):
1 1.6
2 1.1
2 3.4
3 -1.3
3 6.0
3 1.1
4 -1.0
5 10.9
Edit: Gracias a Elenaher, podríamos decir que la entrada es el archivo anterior.
¿Nos puede dar una entrada de ejemplo? – stew
¡Gracias a todos! ¡Eso es genial! – Wok