Hallo, wenn ich eine Tabelle habe, die sich von Zeit zu Zeit ändert:

aber an einem anderen Tag kann es so etwas sein:

und ich möchte irgendwie eine neue Zeile erstellen, die alle Spalten außer Datum und Daten summiert
Was ist der beste Weg, dies in JSL zu tun?
Ich habe versucht, die Spaltennamen zu übernehmen und dann Daten und Datum zu entfernen, bin mir dann aber nicht sicher, wie ich den Summenteil für jede Spalte ausführen soll
Ich habe versucht, die Zusammenfassung zu verwenden, aber jedes Mal, wenn sie sich ändert, ist es die Summe von a, b, r, x und einmal a, c, f, daher bin ich mir nicht sicher, ob dies möglich ist.
Summary(
Sum( :A ),
Sum( :B ),
Sum( :R ),
Sum( :X ),
Freq( "None" ),
Weight( "None" )
)
Summary(
Sum( :A ),
Sum( :C ),
Sum( :F ),
Freq( "None" ),
Weight( "None" )
)
Vielleicht könnten Sie eine ähnliche Idee wie hier verwenden:
Wie erstelle ich eine Zusammenfassung einer Reihe von Spalten, ohne Spaltennamen anzugeben?
Names Default To Here(1);
dt1 = New Table("Untitled1",
Add Rows(3),
Compress File When Saved(1),
New Column("data", Character, "Nominal", Set Values({"a", "b", "c"})),
New Column("date", Numeric, "Continuous", Format("Best", 12), Set Values([2021, 2021, 2021])),
New Column("a", Numeric, "Continuous", Format("Best", 12), Set Values([0, 50, 2])),
New Column("c", Numeric, "Continuous", Format("Best", 12), Set Values([1, 0, 0])),
New Column("f", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 7]))
);
colname = dt1 << get column names(string);
colname = Substr(colname, 3); //remove data and date columns from list
summary_dt1 = dt1 << Summary(Sum(Eval(colname)), Freq("None"), Weight("None"));
summary_dt1 << Delete Columns("N Rows");
dt2 = New Table("Untitled2",
Add Rows(3),
Compress File When Saved(1),
New Column("data", Character, "Nominal", Set Values({"a", "b", "c"})),
New Column("date", Numeric, "Continuous", Format("Best", 12), Set Values([2021, 2021, 2021])),
New Column("a", Numeric, "Continuous", Format("Best", 12), Set Values([0, 50, 2])),
New Column("b", Numeric, "Continuous", Format("Best", 12), Set Values([1, 0, 0])),
New Column("r", Numeric, "Continuous", Format("Best", 12), Set Values([0, 0, 7])),
New Column("x", Numeric, "Continuous", Format("Best", 12), Set Values([2, 7, 1]))
);
colname = dt2 << get column names(string);
colname = Substr(colname, 3); //remove data and date columns from list
summary_dt2 = dt2 << Summary(Sum(Eval(colname)), Freq("None"), Weight("None"));
summary_dt2 << Delete Columns("N Rows");@jthi hat die richtige Antwort gegeben.Ich habe eine geringfügige Änderung, die ich in vielen der von mir geschriebenen Skripte sehr nützlich finde.
Ich stelle fest, dass die Datentabellen, mit denen ich arbeiten kann, die meiste Zeit nicht der gleichen Reihenfolge der Spalten von einem Zugriff bis zum Beispiel dem Zugriff in den folgenden Wochen folgen.Daher, wenn ich eine Liste von Spalten zusammenfassen muss, die zusammengefasst werden sollen usw. Ich benutze den folgenden Code.
colNamesNotToUse = {"DATA", "DATE"};
colname = dt << get column names( string );
For( i = N Items( colName ), i >= 1, i--,
If( Contains( colNamesNotToUse, Uppercase( colName[i] ) ),
Remove From( colName, i, 1 )
)
);