Sumar valores específicos en ciertas filas/columnasHola,
Estoy trabajando con una tabla de datos diseñada de manera extraña. Si ve la tabla a continuación (no datos reales, sino una semejanza), necesito encontrar la suma de todos los números rojos y luego la suma de todos los números verdes. Preferiblemente, se creará una columna adicional y cada fila de Bob leerá la suma roja, y cada fila de Bill leerá la suma verde. ¿Alguien podría darme una descripción general de cómo podría hacer esto?
| Nombre | Edad | Prueba 1 | prueba 2 | Prueba 3 |
| Beto | 1 | 10 | 22 | 34 |
| Beto | 1 | 10 | 22 | 34 |
| Beto | 2 | 12 | 24 | 36 |
| Beto | 2 | 12 | 24 | 36 |
| Beto | 3 | 14 | 26 | 38 |
| Beto | 3 | 14 | 26 | 38 |
| Factura | 1 | dieciséis | 28 | 40 |
| Factura | 1 | dieciséis | 28 | 40 |
| Factura | 2 | 18 | 30 | 42 |
| Factura | 2 | 18 | 30 | 42 |
| Factura | 3 | 20 | 32 | 44 |
| Factura | 3 | 20 | 32 | 44 |
¡Gracias de antemano!
Re: Sumar valores específicos en ciertas filas/columnas¡Muy útil! ¡¡Gracias!!
Re: Sumar valores específicos en ciertas filas/columnasLo siento, pero en mi prisa no noté el hecho de que las filas son duplicados genuinos (como habrás visto en mi ejemplo). Tampoco aprecié que quieras sumar sobre columnas.
Si puede confiar en esta duplicación estricta, entonces podría hacer:
NamesDefaultToHere(1);
// Make some test data: Note that pairs of rows are duplicates!
dt = New Table( "Test Data",
New Column( "Group", Numeric, "Nominal", Values([1,1,1,1,1,1,2,2,2,2,2,2])),
New Column( "Test 1", Numeric, "Ordinal", Values([2,2,3,3,4,4,5,5,6,6,7,7])),
New Column( "Test 2", Numeric, "Ordinal", Values([1,1,2,2,3,3,4,4,5,5,6,6]))
);
// List of columns for Summary
colList = {:Test 1, :Test 2};
// Summary
dt2 = dt << Summary(Group( :Group ), Sum( Eval(colList) ), StatisticsColumnNameFormat("column"));
// Sum over the columns in the summary, but also divide by 2 to account for the duplicate rows in dt
// (1) Template exprtession
CMD = Expr(dt2 << New Column( "Required Sum", Numeric, "Continuous", Formula( Sum(colsTBD) / 2 )));
// (2) Substitute in the columns we have
SubstituteInto(CMD, Expr(colsTBD), Eval(colList));
// (3) Use the expression we have built
CMD;
Re: Sumar valores específicos en ciertas filas/columnasGracias,
Sin embargo, supongamos que simplemente quería agregar todos los valores en una fila específica para un rango de columnas. Encontré este fragmento de código a continuación que creo que agrega todas las celdas en una fila entre las columnas número TR y TD. Sin embargo, simplemente devuelve el valor de la celda TD. ¿Por qué es esto y cómo puedo hacer que funcione?
TotRow = dt << Obtener nombres de columnas (numérico);
TR = N elementos (TotRow);
TD = N elementos (colnamesSix);
dt << Nueva columna ("Total", Numérico);
Para Cada Fila( :Total[] = Suma(Columna(TotRow[TD :: TR])[]) );
Re: Sumar valores específicos en ciertas filas/columnas¿No podrías usar Analizar - Tabular?Coloque el nombre seguido de la edad en las filas y luego use el promedio de la prueba 1 (y las columnas para la prueba 2 y la prueba 3 también): el promedio es para evitar contar dos veces los valores duplicados.Luego conviértalo en una tabla de datos.A partir de ahí, estás casi donde quieres estar.
Re: Sumar valores específicos en ciertas filas/columnasEn el caso simple de un número par de filas en cada grupo, podría hacer algo como esto:
NamesDefaultToHere(1);
// Make some test data
dt = New Table( "Test Data",
Add Rows( 20 ),
New Column( "Group", Numeric, "Nominal", Values(VConcat(J(10, 1, 1), J(10, 1, 2)))),
New Column( "Test 1", Numeric, "Ordinal", Values(J(20, 1, RandomInteger(1,30)))),
New Column( "Test 2", Numeric, "Ordinal", Values(J(20, 1, RandomInteger(1,100))))
);
// Add a 'Subgroup' column
dt << NewColumn("Subgroup", Numeric, Nominal, Values(Repeat((1::2)`, 10)));
// Make a summary table
dt2 = dt << Summary(Group( :Group, :Subgroup ), Sum( :Test 1 ), Sum( :Test 2 ));
dt2 << selectWhere(:Subgroup == 2);
dt2 << hideAndExclude;
dt2 << clearSelect;Re: Sumar valores específicos en ciertas filas/columnas¡Sí! Eso es exactamente lo que necesito.
Re: Sumar valores específicos en ciertas filas/columnas¿Necesita las sumas para cada segunda fila (comenzando con la primera), dentro de cada grupo definido por los valores en 'Nombre'?