Ciao, se ho una tabella che cambia di tanto in tanto qualcosa del genere:

ma un altro giorno può essere qualcosa del genere:

e voglio creare in qualche modo una nuova riga che sommerà tutte le colonne tranne Data e Dati
qual è il modo migliore per farlo in JSL?
Ho provato a prendere i nomi delle colonne e quindi a rimuovere i dati e la data, ma poi non sono sicuro di come fare la parte della somma per ogni colonna
Ho provato a utilizzare il riepilogo ma ogni volta che cambia, una volta sarà la somma di a, b, r, x e una volta a, c, f quindi non sono sicuro che sia possibile ..
Summary(
Sum( :A ),
Sum( :B ),
Sum( :R ),
Sum( :X ),
Freq( "None" ),
Weight( "None" )
)
Summary(
Sum( :A ),
Sum( :C ),
Sum( :F ),
Freq( "None" ),
Weight( "None" )
)
Forse potresti usare un'idea simile come qui:
Come creare un riepilogo di un gruppo di colonne senza specificare i nomi delle colonne?
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 ha fornito la risposta corretta.Ho una leggera modifica che trovo molto utile in molti degli script che scrivo.
Trovo che la maggior parte delle volte, le tabelle di dati con cui posso lavorare, non seguono lo stesso ordine delle colonne da un accesso a diciamo, l'accesso delle settimane successive.Pertanto, quando ho bisogno di accoppiare un elenco di colonne da riepilogare, ecc. Uso il codice seguente.
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 )
)
);