您好,如果我有一个有时会更改的表,例如:

但又有一天可能是这样的:

我想以某种方式创建一个新行,该行将对除“日期”和“数据”之外的所有列求和
在JSL中做到这一点的最佳方法是什么?
我尝试获取列名称,然后删除数据和日期,但是我不确定如何对每一列进行求和
我尝试使用摘要,但是每次更改时,一次将是a,b,r,x和一次a,c,f的总和,因此我不确定这是可能的。
Summary(
Sum( :A ),
Sum( :B ),
Sum( :R ),
Sum( :X ),
Freq( "None" ),
Weight( "None" )
)
Summary(
Sum( :A ),
Sum( :C ),
Sum( :F ),
Freq( "None" ),
Weight( "None" )
)
也许您可以使用与此处类似的想法:
如何在不指定列名的情况下创建一列col的摘要?
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提供了正确的答案。我做了一点修改,发现在我编写的许多脚本中都非常有用。
我发现大多数时候,我要使用的数据表从一次访问到接下来的几周访问都不会遵循相同的列顺序。因此,当我需要配对要汇总的列列表时,等等。 我使用以下代码。
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 )
)
);