Summieren Sie bestimmte Werte in bestimmten Zeilen/SpaltenHi,
Ich arbeite mit einer seltsam angeordneten Datentabelle. Wenn Sie die Tabelle unten sehen (keine tatsächlichen Daten, aber eine Ähnlichkeit), muss ich die Summe aller roten Zahlen und dann die Summe aller grünen Zahlen ermitteln. Vorzugsweise würde eine zusätzliche Spalte erstellt 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. Könnte mir jemand einen Überblick darüber geben, wie ich das anstellen könnte?
| Name | Alter | Test 1 | Test 2 | Test 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!
Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenSehr hilfreich! Danke schön!!
Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenEs tut mir leid, aber in meiner Eile ist mir nicht aufgefallen, dass es sich bei den Zeilen um echte Duplikate handelt (wie Sie vielleicht an meinem Beispiel gesehen haben). Mir gefiel auch nicht, dass Sie über Spalten summieren möchten.
Wenn Sie sich auf diese strikte Duplizierung verlassen können, können 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;
Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenDanke,
Angenommen, ich möchte einfach alle Werte in einer bestimmten Zeile für einen Spaltenbereich hinzufügen. Ich habe diesen Codeausschnitt unten gefunden, der meiner Meinung nach alle Zellen in einer Zeile zwischen den Spalten mit den Nummern TR und TD hinzufügt. Es wird jedoch lediglich der Wert der Zelle TD zurückgegeben. Warum ist das so und wie kann ich es zum Laufen bringen?
TotRow = dt << Spaltennamen abrufen (numerisch);
TR = N Items(TotRow);
TD = N Items(colnamesSix);
dt << New Column("Total", Numeric);
Für jede Zeile( :Total[] = Sum( Column(TotRow[TD :: TR])[]) );
Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenKönnten Sie nicht Analysieren – Tabulieren verwenden?Tragen Sie in die Zeilen „Name“ gefolgt von „Alter“ 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, eine Doppelzählung der doppelten Werte zu vermeiden.Machen Sie daraus dann eine Datentabelle.Von dort aus sind Sie fast dort, wo Sie sein möchten.
Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenIm einfachen Fall einer geraden Anzahl von Zeilen in jeder Gruppe könnten Sie etwa Folgendes tun:
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;Betreff: Spezifische Werte in bestimmten Zeilen/Spalten summierenJa! Das ist genau das, was ich brauche.
Betreff: Spezifische 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?