Summieren Sie bestimmte Werte in bestimmten Zeilen/SpaltenHi,
Ich arbeite mit einer seltsam angelegten Datentabelle. Wenn Sie die folgende Tabelle sehen (keine tatsächlichen Daten, sondern eine Ähnlichkeit), muss ich die Summe aller roten Zahlen und dann die Summe aller grünen Zahlen finden. Vorzugsweise würde eine zusätzliche Spalte erstellt werden und jede Zeile für Bob würde die rote Summe lesen, und jede Zeile für Bill würde die grüne Summe lesen. Kann mir jemand einen Überblick geben, wie ich vorgehen könnte?
| Name | Alter | Prüfung 1 | Prüfung 2 | Prüfung 3 |
| Bob | 1 | 10 | 22 | 34 |
| Bob | 1 | 10 | 22 | 34 |
| Bob | 2 | 12 | 24 | 36 |
| Bob | 2 | 12 | 24 | 36 |
| Bob | 3 | 14 | 26 | 38 |
| Bob | 3 | 14 | 26 | 38 |
| Rechnung | 1 | 16 | 28 | 40 |
| Rechnung | 1 | 16 | 28 | 40 |
| Rechnung | 2 | 18 | 30 | 42 |
| Rechnung | 2 | 18 | 30 | 42 |
| Rechnung | 3 | 20 | 32 | 44 |
| Rechnung | 3 | 20 | 32 | 44 |
Vielen Dank im Voraus!
Re: Bestimmte Werte in bestimmten Zeilen/Spalten summierenSehr hilfreich! Danke schön!!
Re: Bestimmte Werte in bestimmten Zeilen/Spalten summierenEs tut mir leid, aber in meiner Eile habe ich nicht bemerkt, dass die Zeilen echte Duplikate sind (wie Sie vielleicht an meinem Beispiel gesehen haben). Ich habe auch nicht geschätzt, dass Sie über Spalten summieren möchten.
Wenn Sie sich auf diese strikte Duplizierung verlassen können, könnten Sie Folgendes tun:
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: Bestimmte Werte in bestimmten Zeilen/Spalten summierenDanke,
Angenommen, ich wollte einfach alle Werte in einer bestimmten Zeile für eine Reihe von Spalten hinzufügen. Ich habe diesen Codeausschnitt unten gefunden, der meiner Meinung nach alle Zellen in einer Zeile zwischen den Spalten TR und TD hinzufügt. Es gibt jedoch einfach den Wert der Zelle TD zurück. Warum ist das so und wie kann ich es zum Laufen bringen?
TotRow = dt << Spaltennamen abrufen (numerisch);
TR = N Elemente (TotRow);
TD = N Items(colnamesSix);
dt << New Column("Gesamt", Numerisch);
For Each Row(:Total[] = Sum( Column(TotRow[TD :: TR])[]) );
Re: Bestimmte Werte in bestimmten Zeilen/Spalten summierenKönnten Sie nicht Analysieren - Tabellieren verwenden?Geben Sie Name gefolgt von Alter in die Zeilen ein und verwenden Sie dann den Durchschnitt von Test 1 (und auch die Spalten für Test 2 und Test 3) - der Durchschnitt dient dazu, doppelte Zählungen der doppelten Werte zu vermeiden.Machen Sie das dann zu einer Datentabelle.Von dort aus sind Sie fast dort, wo Sie sein möchten.
Re: Bestimmte Werte in bestimmten Zeilen/Spalten summierenIm einfachen Fall einer geraden Anzahl von Zeilen in jeder Gruppe könnten Sie etwa so vorgehen:
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: Bestimmte Werte in bestimmten Zeilen/Spalten summierenJa! Das ist genau das, was ich brauche.
Re: Bestimmte Werte in bestimmten Zeilen/Spalten summierenBenötigen Sie die Summen für jede zweite Zeile (beginnend mit der ersten) innerhalb jeder Gruppe, die durch die Werte in 'Name' definiert ist?