Media e deviazione standard tra campi↵
Le funzioni di aggregazione di QGIS agiscono su un campo, ma se volessimo determinare la media e la stdev dei valori di ogni record, come faremmo?
La funzione che permette di creare una mappa per ogni record è attributes()
e tramite questa risolveremo il problema.
Abbiamo uno shapefile dei comuni siciliani e la tabella degli attributi presenta, per ogni anno (dal 2012 al 2020), il valore della popolazione residente, sotto la tabella:
determinare, per ogni comune, la media e la stdev (deviazione standard campionaria)
La tabella attributi ha 11 campi, ma i valori della popolazione è negli ultimi 9 campi.
Nell'esempio occorre evitare i campi "fid"
, PRO_COM
e COMUNE
, occorre, quindi, utilizzare la seguente espressione:
- media:
with_variable('deleteField',
map_delete(map_delete(map_delete(
attributes(),'PRO_COM'),'COMUNE'),'fid'),
-- media
array_mean(map_avals((@deleteField))
))
- deviazione standard: (occorre evitare anche il campo
media
)
with_variable('deleteField',
map_delete(map_delete(map_delete(map_delete(
attributes(),'PRO_COM'),'COMUNE'),'fid'),'media'),
-- stdev campionaria
with_variable('riga',map_avals(@deleteField),
sqrt(
array_sum(
array_foreach(
@riga,
(@element-array_mean(@riga))^2))
/
(array_length(@riga)-1))
)
)
provaci tu, qui il geopackage↵
Funzioni e variabili utilizzate: