他の列に基づいた累積合計である列の作成に役立ちます<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JSL で、その列の前の行の継続的な合計となる新しい列を作成しようとしています。「1 日の合計フロー」という列があります。また、「1 日の合計フロー」のデータがどの場所から取得されたかをマークする列もあります (これを「サイト」と呼びます)。たとえば、10 月 1 日とします (これは、で指定されています)。別の列は「年の水の日」と呼ばれます) 1 日の総流量は 1000 で、この日は偶然にも年の 1 日目です。最初の行が = 1000 になる列が必要です。次に、2 日目 (テーブルの 2 行目となる 10 月 2 日) には、1 日の合計フローが 5000 であるとします。新しい行を新しい行に含める必要があります。列は 1000 + 5000 = 6000 になります。その後、10 月 3 日の 1 日あたりのフローが 3000 であるとします。そのため、次の行は 6000+3000 = 9000 になります。これは、同じ場所名を共有するテーブル内のすべての行に対して続きます。 (サイト) であり、列「水の日」(1-365) で指定されているのと同じ「年」にあります。
Re: 他の列に基づく累積合計である列の作成を支援する役に立ったと思っていただければ幸いです、
おそらくワンライナーはこれに基づいている可能性があります:
Re: 構文: ID によってインデックス列を作成するにはどうすればよいですか
また、並べ替えから独立させ、アクティブな式を維持することもできます。
しかし、どうやって対処すればいいのかわかりません。
一番
Re: 他の列に基づく累積合計である列の作成を支援するこんにちは、ロンさん
これは素晴らしい解決策です。投稿していただきありがとうございます。
新しい列 sumheightbysex の数式には、わずかなタイプミスがあります。 そのはず
If(Row() == 1, :height, :sex == Lag(:sex, 1), :height + Lag(:sumhightbysex, 1), :sex != Lag(:sex, 1), :height, Empty())
前の行の高さではなく、新しい列の値を使用して高さを追加します (:height + Lag(:height), 1)。
今日
Re: 他の列に基づく累積合計である列の作成を支援するやあ記者、
もっと賢い人がワンライナーを思いつくまで、私の配管工向けの解決策を試してみてください。
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" );
Re: 他の列に基づく累積合計である列の作成を支援するJMP バージョン 12 を実行している場合、データ テーブルの列ヘッダー フィールドを右クリックすると、JSL に頼らなくても、新しい数式列 -> 行 -> 累積が機能するはずです。 下記参照:
