Berechnen Sie die Summe der Spaltenteile basierend auf einer anderen Spalte mit dem QGIS Field Calculator?


16

Ich möchte die Summe der Werte in einer Spalte anhand der Werte in einer anderen Spalte berechnen. Um meine Frage zu veranschaulichen, habe ich das folgende Bild hochgeladen. Die zweite Spalte besteht aus Postleitzahlen, der dritte Gesamtumsatz. Ich möchte wissen, wie hoch der Gesamtumsatz pro Postleitzahl ist. Also in diesem Fall:

Was ist die Summe von Spalte drei für den Wert von Spalte zwei 1023? Ausgabe sollte dann sein 4 (0+1+1+2+0). Die Summe für 1024dann sollte nach der gleichen Logik 11,5 sein.

Da dies ein ziemlich großer Datensatz ist, möchte ich, dass der QGIS-Feldrechner (oder ein anderes Tool) ein neues Feld berechnet, in dem der Gesamtumsatz in der Postleitzahl angegeben ist. Bisher kann ich es anscheinend nicht zum Laufen bringen und habe gehofft, dass mir hier jemand helfen kann.

Wie Sie sehen, habe ich einige fehlende Werte. Ist dies ein Problem bei der Berechnung? Vielleicht ist es gut zu erwähnen, dass es sich um einen Tisch handelt.

Beispiel


sollte 3 (0 + 1 + 1 + 2 + 0) sein ?? Ja wirklich?
user7172

Antworten:


24

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

Im Feldrechner können Sie die Aggregatfunktion verwenden sum, mit der Sie die Werte einer Spalte basierend auf einem Ausdruck summieren können. Optional können Sie auch Features für die Summierung gruppieren und filtern. In Ihrem Feldrechner können Sie also einfach Folgendes verwenden:

sum( "Sum", "Sales")

Das funktioniert genauso wie die Methode mit dem GroupStats- Plugin.



Ursprünglicher Beitrag: 02/03/2016

Verwenden Sie das GroupStats- Plugin, das Sie möglicherweise unter Plugins> Plugins verwalten und installieren herunterladen müssen .

Hier ist eine Beispielebene mit einigen der Attribute, die Sie gezeigt haben:

Schicht

Also lasst uns:

  1. Führen Sie das GroupStats- Plugin aus, wählen Sie die relevanten Felder für die Summierung aus ( Salesfür Zeilen; Sumfür Werte) und klicken Sie dann auf Berechnen . Sie sollten die Ergebnisse sehen, die die Summe jedes Verkaufs zeigen:

    GroupStats-Plugin

  2. Speichern Sie die Ergebnisse als CSV-Datei in der GroupStats-Symbolleiste:

    In CSV exportieren

  3. Importieren Sie die CSV-Datei zurück in QGIS, indem Sie sie auf die Benutzeroberfläche oder von der Symbolleiste ziehen:

    Ebene> Ebene hinzufügen> Begrenzte Textebene hinzufügen ( beachten Sie, dass die Werte durch Semikolons getrennt sind )

  4. Führen Sie eine Verknüpfung mit dem Shapefile und der CSV-Datei durch, die den SalesFeldern entsprechen:

    Schließt sich an

  5. Das Shapefile sollte nun die Summenwerte aus der CSV-Datei enthalten:

    Ergebnisse

Wenn Sie möchten, können Sie die Save As...Option im Shapefile verwenden und als neue speichern, um die verbundenen Felder beizubehalten.


Es wäre hilfreich, wenn die Feldrechnerkomponente dieser Antwort die SQL-Zeilen enthält, die gruppieren und / oder filtern. @ Joseph
Eyerah

@eyerah - Der Ausdruck sum( "Sum", "Sales")wird "Sales"als Gruppenfilter verwendet, wenn Sie das meinen?
Joseph

1
Oh. Das sehe ich jetzt. Das habe ich gemeint. Vielen Dank.
Eyerah

11

Wenn Sie auf die neueste QGIS-Version 2.14 aktualisieren, können Sie virtuelle Ebenen verwenden, die eine SQL-Anweisung wie folgt erstellen:

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

Die Benutzeroberfläche sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Sie können auch den DB-Manager verwenden, in dem sich hinter der SQL-Schaltfläche ein Abfrage-Generator befindet:

Bildbeschreibung hier eingeben

Die Spalte MYID kann verwendet werden, um die summierten Verkäufe wieder mit der Haupttabelle zu verknüpfen. Die Registerkarte Verbinden befindet sich unter Tabelleneigenschaften.

Schauen Sie sich das QGIS Visual Changelog unter anFeature: Virtual layers


6

Eine Möglichkeit, dies zu tun, ist die folgende:

  • Wählen Sie in der Attributtabelle Auswahl nach Merkmal. Geben Sie "Spaltenname" = 1023 ein. Alle Felder mit dem Wert 1023 werden ausgewählt.
  • Gehen Sie zu Vektorwerkzeuge -> Analysewerkzeuge -> Grundstatistik. Wählen Sie Ihre Ebene und die Spalte mit den Verkäufen. Stellen Sie sicher, dass das Kontrollkästchen "Nur ausgewählte Werte" aktiviert ist. Die Summe wird im Ergebnisfenster angezeigt. Du musst es aufschreiben;)
  • Wiederholen Sie die Schritte für jede Postleitzahl

1
PS Fehlende Werte sind kein Problem.
Miron

Dies ist ein einfacher und gut funktionierender Ansatz. Es kann jedoch sehr zeitaufwendig sein, wenn ein großer Datensatz verarbeitet wird, wie von Ammar erwähnt ...
dru87
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.