17 votos

Calculando la suma de partes de una columna basada en otra columna usando el Calculador de Campos de QGIS.

Me gustaría calcular la suma de los valores en una columna, basándome en los valores de otra columna. Para ilustrar mi pregunta, he subido la imagen a continuación. La segunda columna consta de códigos postales, la tercera de ventas totales. 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? La salida debería ser 4 (0+1+1+2+0). La suma para 1024 sería entonces 11,5 siguiendo la misma lógica.

Dado que se trata de un conjunto de datos bastante grande, me gustaría que la calculadora de campos de QGIS (u otra herramienta) calcule un nuevo campo que muestre las ventas totales en el código postal. Hasta ahora no he logrado que funcione y esperaba que alguien aquí pudiera ayudarme.

Como puedes ver, tengo algunos valores faltantes, ¿es esto un problema en el cálculo? Quizás es bueno mencionar que se trata de una tabla.

Ejemplo

0 votos

Debería ser 3 (0+1+1+2+0) ?? ¿en serio?

25voto

Mue Puntos 2469

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

En la Calculadora de Campos, puedes usar la función Agregar sum que te permite sumar los valores de una columna basándote en una expresión. También puedes, opcionalmente, agrupar y filtrar entidades para la suma. Así que en tu calculadora de campos, simplemente podrías usar:

sum( "Sum", "Ventas")

Lo cual hace exactamente lo mismo que el método usando el plugin GroupStats.



Publicación original: 02/03/2016

Usa el plugin GroupStats que tal vez necesites descargar desde Complementos > Administrar e Instalar Complementos.

Aquí tienes un ejemplo de capa usando algunos de los atributos que has mostrado:

Capa

Entonces:

  1. Ejecuta el plugin GroupStats, selecciona los campos relevantes para sumar (Ventas para filas; Suma para valores) y luego haz clic en Calcular. Deberías ver los resultados mostrando la suma de cada venta:

    Plugin GroupStats

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

    Exportar a csv

  3. Importa el archivo .csv de vuelta a QGIS ya sea arrastrándolo a la interfaz o desde la barra de herramientas:

    Capa > Añadir Capa > Añadir Capa de Texto Delimitado (nota que los valores están separados por punto y coma)

  4. Haz un Join con el archivo de formas y el archivo .csv, emparejando los campos Ventas:

    Joins

  5. El archivo de formas ahora debería contener los valores de suma del archivo .csv:

    Resultados

Puedes, si lo deseas, proceder a usar la opción Guardar como... en el archivo de formas y guardarlo como uno nuevo para mantener los campos unidos.

0 votos

Sería útil si el componente de la calculadora de campos de esta respuesta incluyera las líneas SQL que agrupan y/o filtran. @Joseph

0 votos

@eyerah - La expresión sum( "Sum", "Ventas") utiliza "Ventas" como filtro de grupo, ¿eso es lo que quieres decir?

1 votos

Oh. Lo veo ahora. Eso es lo que quise decir. Gracias.

12voto

Ivan Petrushev Puntos 158

Si actualiza a la última versión de QGIS 2.14, 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 interfaz de usuario se ve así:

introduzca aquí la descripción de la imagen

También puede usar el DB manager, donde tiene un constructor de consultas detrás del botón de SQL:

introduzca aquí la descripción de la imagen

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

Eche un vistazo al registro de cambios visual de QGIS bajo Función: Capas virtuales

6voto

Sam Puntos 11

Una forma de hacer esto es la siguiente:

  • En la tabla de atributos, elige seleccionar por entidad. Escribe "nombre-de-la-columna" = 1023. Todos los campos con el valor 1023 serán seleccionados.
  • Ve a herramientas de vector --> herramientas de análisis --> estadísticas básicas. Elige tu capa y la columna con las ventas. Asegúrate de marcar la casilla de verificación "solo valores seleccionados". La suma se mostrará en la ventana de resultados. ¡Debes anotarlo! ;)
  • Repite los pasos para cada código postal

1 votos

P.D. Los valores faltantes no son un problema.

0 votos

Esta es un enfoque simple y eficaz. Sin embargo, puede ser muy consume tiempo al procesar un gran conjunto de datos como mencionó Ammar...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X