Calculando a soma de partes da coluna com base em outra coluna usando a Calculadora de campo QGIS?


16

Eu gostaria de calcular a soma dos valores em uma coluna, com base nos valores em outra coluna. Para ilustrar minha pergunta, enviei a imagem abaixo. A segunda coluna consiste em códigos postais, o terceiro total de vendas. Gostaria de saber quais são as vendas totais por CEP? Então, neste caso:

Qual é a soma da coluna três para o valor da coluna dois 1023? Saída então deve ser 4 (0+1+1+2+0). A soma para 1024então deve ser 11,5 seguindo a mesma lógica.

Como esse é um conjunto de dados bastante amplo, gostaria que a calculadora de campo QGIS (ou qualquer outra ferramenta) calculasse um novo campo que indique o total de vendas no CEP. Até agora, parece que não consigo fazê-lo funcionar e esperava que alguém aqui pudesse me ajudar.

Como você pode ver, tenho alguns valores ausentes, isso é um problema de cálculo? Talvez seja bom mencionar que é uma mesa.

Exemplo


deve ser 3 (0 + 1 + 1 + 2 + 0) ?? verdade?
user7172

Respostas:


24

Atualização: QGIS 2.18 (07/07/2017):

Na Calculadora de campo , você pode usar a função Agregar , sumque permite somar os valores de uma coluna com base em uma expressão. Você também pode, opcionalmente, agrupar e filtrar recursos para somar. Então, na sua calculadora de campo, você pode simplesmente usar:

sum( "Sum", "Sales")

Que faz exatamente o mesmo que o método usando o plug- in GroupStats .



Artigo original: 02/03/2016

Use o plug- in GroupStats, que pode ser baixado em Plug - ins> Gerenciar e instalar plug-ins .

Aqui está um exemplo de camada usando alguns dos atributos que você mostrou:

Camada

Então vamos:

  1. Execute o plug- in GroupStats , selecione os campos relevantes para soma ( Salespara linhas; Sumpara valores) e clique em Calcular . Você deve ver os resultados mostrando a soma de cada venda:

    Plugin GroupStats

  2. Salve os resultados como um arquivo .csv na barra de ferramentas do GroupStats:

    Exportar para csv

  3. Importe o arquivo .csv de volta para o QGIS, arrastando-o para a interface ou na barra de ferramentas:

    Camada> Adicionar camada> Adicionar camada de texto delimitada ( observe que os valores são separados por ponto e vírgula )

  4. Faça um Join com o shapefile e o arquivo .csv, correspondendo aos Salescampos:

    Junções

  5. O shapefile agora deve conter os valores da soma do arquivo .csv:

    Resultados

Você pode, se desejar, continuar usando o Save As... opção no shapefile e salvá-la como nova para manter os campos associados.


Seria útil se o componente da calculadora de campo desta resposta incluísse as linhas SQL que agrupam e / ou filtram. @Joseph
eyerah

@eyerah - A expressão sum( "Sum", "Sales")usa "Sales"como filtro de grupo, se é isso que você quer dizer?
Joseph

1
Oh. Eu vejo isso agora. Foi isso que eu quis dizer. Obrigado.
21128 eyerah

11

Se você atualizar para a versão 2.14 mais recente do QGIS, poderá usar camadas virtuais criando uma instrução sql como:

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

A interface do usuário é semelhante a:

insira a descrição da imagem aqui

Você também pode usar o gerenciador de banco de dados, onde você tem um construtor de consultas por trás do botão sql:

insira a descrição da imagem aqui

A coluna MYID pode ser usada para associar as vendas somadas de volta à tabela principal. A guia de junção está nas propriedades da tabela.

Veja o changelog visual do QGIS emFeature: Virtual layers


6

Uma maneira de fazer isso é o seguinte:

  • Na tabela de atributos, escolha selecionar por recurso. Digite "nome da coluna" = 1023. Todos os campos com o valor 1023 são selecionados.
  • Vá para Ferramentas de vetor -> Ferramentas de análise -> Estatísticas básicas. Escolha sua camada e a coluna com as vendas. Certifique-se de marcar a caixa de seleção "somente valores selecionados". A soma será exibida na janela de resultados. Você tem que anotá-la;)
  • repita as etapas para cada código postal

1
PS Valores ausentes não são problema.
Miron

Essa é uma abordagem simples e que funciona bem. No entanto, pode ser muito demorado quando o processamento de um grande conjunto de dados como Ammar mencionado ...
dru87
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.