Calcolo della somma delle parti della colonna in base a un'altra colonna utilizzando il calcolatore di campo QGIS?


16

Vorrei calcolare la somma dei valori in una colonna, in base ai valori in un'altra colonna. Per illustrare la mia domanda ho caricato l'immagine qui sotto. La seconda colonna è composta da codici postali, la terza totale delle vendite. Vorrei sapere quali sono le vendite totali per codice postale? Quindi in questo caso:

Qual è la somma della colonna tre per il valore della colonna due 1023 ? Quindi l'uscita dovrebbe essere 4 (0+1+1+2+0). La somma per 1024allora dovrebbe essere 11,5 seguendo la stessa logica.

Poiché si tratta di un set di dati piuttosto grande, vorrei che il calcolatore di campo QGIS (o qualsiasi altro strumento) calcolasse un nuovo campo che indica le vendite totali nel codice postale. Finora non riesco a farlo funzionare e spero che qualcuno qui possa aiutarmi.

Come vedi ho alcuni valori mancanti, è un problema nel calcolo? Forse è bello ricordare che è un tavolo.

Esempio


dovrebbe essere 3 (0 + 1 + 1 + 2 + 0) ?? veramente?
user7172

Risposte:


24

Aggiornamento: QGIS 2.18 (07/07/2017):

Nel Field Calculator , è possibile utilizzare la funzione Aggregazionesum che consente di sommare i valori di una colonna in base a un'espressione. È inoltre possibile, facoltativamente, raggruppare e filtrare le funzioni per il riepilogo. Quindi nel tuo calcolatore di campo, potresti semplicemente usare:

sum( "Sum", "Sales")

Che fa esattamente lo stesso del metodo che utilizza il plug-in GroupStats .



Post originale: 02/03/2016

Utilizzare il plug-in GroupStats che potrebbe essere necessario scaricare da Plugin> Gestisci e installa plug-in .

Ecco un livello di esempio che utilizza alcuni degli attributi che hai mostrato:

Strato

Quindi andiamo:

  1. Eseguire il plug-in GroupStats , selezionare i campi pertinenti per il riepilogo ( Salesper le righe; Sumper i valori) e quindi fare clic su Calcola . Dovresti vedere i risultati che mostrano la somma di ogni vendita:

    Plug-in GroupStats

  2. Salvare i risultati come file .csv dalla barra degli strumenti di GroupStats:

    Esporta in CSV

  3. Importa nuovamente il file .csv in QGIS trascinandolo sull'interfaccia o dalla barra degli strumenti:

    Livello> Aggiungi livello> Aggiungi livello di testo delimitato ( notare che i valori sono separati da punti e virgola )

  4. Esegui un join con lo shapefile e il file .csv, facendo corrispondere i Salescampi:

    Si unisce

  5. Il file di forma dovrebbe ora contenere i valori di somma dal file .csv:

    risultati

Se lo desideri, puoi utilizzare l' Save As...opzione sul file di forma e salvarla come nuova per mantenere i campi uniti.


Sarebbe utile se il componente calcolatrice di campo di questa risposta includesse le righe SQL che raggruppano e / o filtrano. @Joseph
eyerah

@eyerah - L'espressione sum( "Sum", "Sales")utilizza "Sales"come filtro di gruppo, se è questo che intendi?
Joseph,

1
Oh. Lo vedo adesso. Questo è ciò che intendevo. Grazie.
eyerah,

11

Se si aggiorna all'ultima versione QGIS 2.14, è possibile utilizzare i livelli virtuali creando un'istruzione sql come:

SELECT "MYTABLE"."MYID", Sum("MYTABLE"."SALES")  AS zip_sale /*:int*/
FROM "MYTABLE"
GROUP BY "MYTABLE"."ZIPCODE"

L'interfaccia utente è simile a:

inserisci qui la descrizione dell'immagine

È inoltre possibile utilizzare il gestore DB, in cui è presente un generatore di query dietro il pulsante sql:

inserisci qui la descrizione dell'immagine

La colonna MYID può essere utilizzata per unire le vendite sommate alla tabella principale. La scheda Join è sotto le proprietà del tabel.

Dai un'occhiata al log delle modifiche visivo di QGIS sottoFeature: Virtual layers


6

Un modo per farlo è il seguente:

  • Nella tabella degli attributi, selezionare Seleziona per funzione. Digita "nome-colonna" = 1023. Tutti i campi con il valore 1023 sono selezionati.
  • Vai a strumenti vettoriali -> Strumenti di analisi -> statistiche di base. Scegli il tuo livello e la colonna con le vendite. Assicurati di selezionare la casella di controllo "solo valori selezionati". La somma verrà visualizzata nella finestra del risultato. Devi scriverlo;)
  • ripetere i passaggi per ogni codice postale

1
PS I valori mancanti non sono un problema.
Miron

Questo è un approccio semplice e ben funzionante. Tuttavia, potrebbe essere molto dispendioso in termini di tempo durante l'elaborazione di un set di dati di grandi dimensioni come menzionato da Ammar ...
dru87
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.