帮助创建一个基于其他列的累积和的列<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在尝试在 JSL 中创建一个新列,该列将是该列中前几行的持续总和。我有一个名为“每日总流量”的列,我还有一列标记“每日总流量”中的数据来自哪个位置(称为“站点”)。例如,说于 10 月 1 日(在另一栏名为“水年日”)我每天的总流量为1000,而这一天恰好是一年中的第一天。我想要一个第一行 = 1000 的列。然后说在第二天,这将是表中的第二行,即 10 月 2 日,每日总流量为 5000,我希望新行中的新行列为 1000 + 5000 = 6000。然后假设 10 月 3 日的每日流量为 3000,因此下一行将为 6000+3000 = 9000。这对于我的表中共享相同位置名称的每一行都适用(站点)与“水年日”栏指定的同一“年”(1-365)。
回复:帮助创建一个基于其他列的累积和的列很高兴您发现它有用,
也许 oneliner 可以基于此:
回复:语法:如何通过 ID 创建索引列
它还将使其独立于排序并保持活跃的公式。
但我不知道如何解决它。
最好的
回复:帮助创建一个基于其他列的累积和的列嗨罗恩,
这是一个很好的解决方案,感谢您的发帖。
新列 sumheightbysex 的公式有轻微的拼写错误。 它应该是
If(Row() == 1, :height, :sex == Lag(:sex, 1), :height + Lag(:sumhightbysex, 1), :sex != Lag(:sex, 1), :height, Empty())
使用新列中的值添加到高度,而不是前一行的高度,:height + Lag(:height), 1)。
你好
回复:帮助创建一个基于其他列的累积和的列你好搬运工,
在更聪明的人想出一种内衬之前,您可以尝试我的水管工解决方案:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Row", formula( :Row() ), eval formula );
dt:row << delete formula;
// assuming age is time and sex is site
dt << Sort( By( :sex, :age ), Order( Ascending, Ascending ), replace table );
// now sum as you want it
dt << New Column( "sumhightbysex",
formula( If( Row() == 1, :height, :sex == Lag( :sex, 1 ), :height + Lag( :height, 1 ), :sex != Lag( :sex, 1 ), :height, Empty() ) ), eval formula
);
dt:sumhightbysex << delete formula;
// sort to original order
dt << Sort( By( :Row ), Order( Ascending ), replace table );
// clean up
dt << delete column (row);
Speak( "bob's your uncle" );
回复:帮助创建一个基于其他列的累积和的列如果您运行的是 JMP 版本 12,并且右键单击数据表中的列标题字段,则新公式列 -> 行 -> 累积应该可以正常工作,而无需求助于 JSL。 见下文:
