Algo como
#!/usr/bin/gawk
BEGIN {OFS = "\t"}
{
key = int($1) OFS $2 OFS $3
sum[key] += $4
count[key]++
}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
for (key in sum)
print key, sum[key]/count[key]
}
Eu preciso processar alguns dados para minha dissertação e preciso fazê-lo através do Linux, como eu tenho > 2 milhões de pontos. Eu atualmente tenho meus dados selecionados em um arquivo que se parece com isso usando o awk:
2003.1 -142 42.0000 -6.8990
2003.2 -142 42.0000 -4.7063
...
2003.12 -142 42.0000 -2.1986
2004.1 -139 42.0000 0.6408
2004.2 -139 42.0000 3.7293
2004.3 -137 50.0000 6.9090
2004.4 -136 50.0000 10.0193
Colunas são: ano decimal, longitude, latitude, valor respectivamente. Eu quero média de cada valor de ponto que tem o mesmo lat e long no mesmo ano (por isso, desconsiderando a casa decimal no ano).
, por exemplo, a saída será semelhante a:
2003 1 1 30.000
2003 1 2 20.000
...
2003 180 90 40.000
2004 1 1 30.000
2004 1 2 20.000
...
2004 180 90 40.000
...
...
...
2015 180 90 -100.000
Uma média para cada ponto por ano.
Eu tenho usado o awk atualmente, se alguém puder me mostrar como fazer isso usando isso, será muito apreciado, obrigado!
Tags awk