Вычислить сумму частей столбца на основе другого столбца, используя QGIS Field Calculator?

16

Я хотел бы рассчитать сумму значений в одном столбце на основе значений в другом столбце. Чтобы проиллюстрировать мой вопрос, я загрузил картинку ниже. Второй столбец состоит из почтовых индексов, третий общий объем продаж. Я хотел бы знать, каковы общие продажи по почтовому индексу? Итак, в этом случае:

Какова сумма столбца три для значения второго столбца 1023? Выходной тогда должно быть 4 (0+1+1+2+0). Сумма для 1024тогда должна быть 11,5, следуя той же логике.

Поскольку это довольно большой набор данных, я бы хотел, чтобы калькулятор полей QGIS (или любой другой инструмент) вычислил новое поле, в котором указываются общие продажи в почтовом индексе. Пока что я не могу заставить его работать и надеялся, что кто-то здесь сможет мне помочь.

Как вы видите, у меня есть некоторые пропущенные значения, это проблема в расчете? Возможно, стоит упомянуть, что это стол.

пример

Аммар
источник
должно быть 3 (0 + 1 + 1 + 2 + 0) ?? действительно?
user7172

Ответы:

24

Обновление: QGIS 2.18 (07.07.2017):

В Калькуляторе полей вы можете использовать функцию Aggregate,sum которая позволяет суммировать значения столбца на основе выражения. Вы также можете, при желании, группировать и фильтровать объекты для суммирования. Итак, в своем полевом калькуляторе вы можете просто использовать:

sum( "Sum", "Sales")

Что делает точно так же, как метод с использованием плагина GroupStats .



Оригинальное сообщение: 03/03/2016

Используйте плагин GroupStats, который вам может понадобиться загрузить из плагинов> Управление и установка плагинов .

Вот пример слоя с использованием некоторых атрибутов, которые вы показали:

Слой

Итак, начнем:

  1. Запустите плагин GroupStats , выберите соответствующие поля для суммирования ( Salesдля строк; Sumдля значений) и нажмите кнопку « Рассчитать» . Вы должны увидеть результаты, показывающие сумму каждой продажи:

    Плагин GroupStats

  2. Сохраните результаты в виде файла .csv на панели инструментов GroupStats:

    Экспорт в CSV

  3. Импортируйте файл .csv обратно в QGIS, перетащив его в интерфейс или с панели инструментов:

    Слой> Добавить слой> Добавить текстовый слой с разделителями ( обратите внимание, что значения разделены точками с запятой )

  4. Сделайте играя с шейп и файл .csv, сопоставляя Salesполя:

    присоединяется

  5. Теперь шейп-файл должен содержать значения суммы из файла .csv:

    Результаты

Вы можете, если хотите, перейти к использованию Save As...параметра в шейп-файле и сохранить его как новый, чтобы сохранить объединенные поля.

Джозеф
источник
Было бы полезно, если бы компонент калькулятора полей этого ответа включал строки SQL, которые группируют и / или фильтруют. @ Джозеф
eyerah
@eyerah - выражение sum( "Sum", "Sales")использует "Sales"в качестве группового фильтра, если это то, что вы имеете в виду?
Джозеф
1
Ой. Я вижу это сейчас. Это то, что я имел в виду. Благодарю.
Eyerah
11

Если вы обновитесь до самой последней версии QGIS 2.14, вы можете использовать виртуальные слои, создавая выражение SQL, например:

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

Интерфейс выглядит так:

введите описание изображения здесь

Вы также можете использовать менеджер БД, в котором за кнопкой sql есть построитель запросов:

введите описание изображения здесь

Столбец MYID можно использовать для присоединения суммированных продаж к основной таблице. Вкладка объединения находится в свойствах вкладки.

Взгляните на визуальный журнал изменений QGIS в разделеFeature: Virtual layers

Jakob
источник
6

Способ сделать это заключается в следующем:

  • В таблице атрибутов выберите «Выбрать по элементу». Введите «имя-столбца» = 1023. Все поля со значением 1023 выбраны.
  • Перейти к векторным инструментам -> Инструменты анализа -> Основная статистика. Выберите свой слой и колонку с продажами. Обязательно установите флажок «только для выбранных значений». Сумма будет отображаться в окне результатов. Вы должны записать это;)
  • повторите шаги для каждого почтового индекса
Мирон
источник
1
PS Отсутствующие значения не проблема.
Мирон
Это простой и хорошо работающий подход. Однако это может занять очень много времени при обработке большого набора данных, как упомянул Аммар ...
dru87