幫助創建一個基於其他列的累積和的列<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。 見下文:
