Cálculo de la suma de partes de la columna en función de otra columna utilizando la calculadora de campo QGIS?

16

Me gustaría calcular la suma de valores en una columna, en función de los valores en otra columna. Para ilustrar mi pregunta, cargué la imagen a continuación. La segunda columna consta de códigos postales, el tercer total de ventas. ¿Me gustaría saber cuáles son las ventas totales por código postal? Entonces en este caso:

¿Cuál es la suma de la columna tres para el valor de la columna dos 1023? Salida entonces debe ser 4 (0+1+1+2+0). La suma para 1024entonces debería ser 11,5 siguiendo la misma lógica.

Como este es un conjunto de datos bastante grande, me gustaría que la calculadora de campo QGIS (o cualquier otra herramienta) calcule un nuevo campo que indique las ventas totales en el código postal. Hasta el momento parece que no puedo hacerlo funcionar y esperaba que alguien aquí pudiera ayudarme.

Como puede ver, me faltan algunos valores, ¿es un problema de cálculo? Quizás sea bueno mencionar que es una mesa.

Ejemplo

Ammar
fuente
debe ser 3 (0 + 1 + 1 + 2 + 0) ?? ¿De Verdad?
user7172

Respuestas:

24

Actualización: QGIS 2.18 (07/07/2017):

En la Calculadora de campo , puede usar la función Agregadosum que le permite sumar los valores de una columna en función de una expresión. También puede, opcionalmente, agrupar y filtrar características para sumar. Entonces, en su calculadora de campo, simplemente podría usar:

sum( "Sum", "Sales")

Lo que hace exactamente lo mismo que el método que usa el complemento GroupStats .



Publicación original: 03/02/2016

Use el complemento GroupStats que puede necesitar descargar de Complementos> Administrar e instalar complementos .

Aquí hay una capa de ejemplo que usa algunos de los atributos que ha mostrado:

Capa

Entonces vamos:

  1. Ejecute el complemento GroupStats , seleccione los campos relevantes para sumar ( Salespara filas; Sumpara valores) y luego haga clic en Calcular . Debería ver los resultados que muestran la suma de cada venta:

    Complemento GroupStats

  2. Guarde los resultados como un archivo .csv desde la barra de herramientas GroupStats:

    Exportar a csv

  3. Importe el archivo .csv nuevamente a QGIS arrastrándolo a la interfaz o desde la barra de herramientas:

    Capa> Agregar capa> Agregar capa de texto delimitado ( tenga en cuenta que los valores están separados por punto y coma )

  4. Haga uniones con el archivo shape y el archivo .csv, haciendo coincidir los Salescampos:

    Uniones

  5. El archivo de forma ahora debe contener los valores de suma del archivo .csv:

    Resultados

Si lo desea, puede utilizar la Save As...opción en el archivo de forma y guardarla como una nueva para mantener los campos unidos.

José
fuente
Sería útil si el componente de la calculadora de campo de esta respuesta incluyera las líneas SQL que agrupan y / o filtran. @Joseph
eyerah
@eyerah: la expresión se sum( "Sum", "Sales")usa "Sales"como filtro de grupo, si eso es lo que quieres decir.
Joseph
1
Oh. Ya veo eso ahora. Eso es a lo que me refiero. Gracias.
eyerah
11

Si actualiza a la última versión 2.14 de QGIS, puede usar capas virtuales haciendo una declaración sql como:

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

La IU se ve así:

ingrese la descripción de la imagen aquí

También puede usar el administrador de base de datos, donde tiene un generador de consultas detrás del botón sql:

ingrese la descripción de la imagen aquí

La columna MYID se puede usar para unir las ventas sumadas a la tabla principal. La pestaña de unión está debajo de las propiedades de tabla.

Eche un vistazo al registro de cambios visuales de QGIS enFeature: Virtual layers

Jakob
fuente
6

Una forma de hacerlo es la siguiente:

  • En la tabla de atributos, elija seleccionar por característica. Escriba "column-name" = 1023. Todos los campos con el valor 1023 están seleccionados.
  • Vaya a herramientas vectoriales -> Herramientas de análisis -> estadísticas básicas. Elija su capa y la columna con las ventas. Asegúrese de marcar la casilla de verificación "solo valores seleccionados". La suma se mostrará en la ventana de resultados. Tienes que escribirlo;)
  • repita los pasos para cada código postal
Miron
fuente
1
PS Los valores perdidos no son un problema.
Miron
Este es un enfoque simple y que funciona bien. Sin embargo, puede llevar mucho tiempo procesar un gran conjunto de datos como mencionó Ammar ...
dru87