特定の行を選択することによる Col (Sum) 関数<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
別の列の平均または合計を計算する列を作成したいのですが、次のように関数を指定したいと考えています。
たとえば、年を選択すると、「年」によって計算が行われるとします。または、
NetRevenueWithoutVat の年別の列 (合計) または「NetRevenueWithoutVat」の「月 (滞在日)」別の列 (合計) を考えてみましょう。
特定の行番号の Col (Sum) 関数...
誰か自分の知識を共有してくださいスクリプトで実行するか、列に数式として Col(Sum) 関数を入力して実行するにはどうすればよいですか?
その背後にあるロジックは何ですか?
よろしくお願いします

Re: 特定の行を選択して Col (Sum) 関数を使用する使用する日付範囲ごとにグループ化列を含む個別の列を作成する必要があるか、次のようなものを使用することもできます。
Col Sum(
If(
:Event Date >= Informat( "02/01/2001", "mm/dd/yyyy" ) & :Event Date <=
Informat( "02/28/2001", "mm/dd/yyyy" ),
:Total Fatal Injuries,
0
)
)
Re: 特定の行を選択して Col (Sum) 関数を使用する気にしないでください、分かりました!
コルサム(
:決済金額、
:日付 >= 01Aug2018 & :日付 <= 07Aug2018、
:カード番号
)Re: 特定の行を選択して Col (Sum) 関数を使用する申し訳ありませんが、私は新しい JMP ユーザーです。 私は数式エディターのみを使用しており、JSL は使用していません。 あなたが私に与えているものがJSLのためのものなのか、それともフォーミュラエディタのためのものなのかはわかりません。 このように条件を式に入れることはできないのでしょうか?
コル・サム(:決済金額、 :日付 >= 8 / 1 / 2018年& :日付 <= 8 / 7 / 2018年、:カード番号)
私が遭遇している問題を除いて、JMPはそれを日付式ではなく除算に自動修正しているということです。
Re: 特定の行を選択して Col (Sum) 関数を使用する@mitch103 、
が提案したこのようなことを試してください@MS :
dt = Current Data Table();
dt << Select Where(:Date > StartDate & :Date <ENDDATE></ENDDATE>
Re: 特定の行を選択して Col (Sum) 関数を使用するこの式を使用して、特定の列のロジックを定義できますか? たとえば、2 つの日付間の各レコードの金額を合計しようとしています。 したがって、式は次のようになります。
コル・サム( :金額、:日付)
しかし、日付範囲を定義する方法がわかりません。
Re: 特定の行を選択して Col (Sum) 関数を使用する使用するとき
Col Sum( :ColumnName, Selected() )
次のエラーが表示されます。
Row number not set or in range in access or evaluation of 'Selected' , Selected/*###*/()
何が起こっているのか誰か教えてくれませんか?
Re: 特定の行を選択して Col (Sum) 関数を使用するコード例:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
Col Sum() 関数は、オープン コードと数式では動作が異なります。 オープン コードでデータを処理するときに、2 番目の要素が存在すると、結果の値が複数の値を返すため、JMP はステートメントを実行できません。 つまり、例の戻り値では、変数 "n" に 2 つの値が必要になります。 選択された行の Col Sum() と選択されていない行の Col Sum()。 JMP は値のリストを返すことができると思いますが、 @MSこれには Summarize() 関数が使用されることが示されました。 したがって、Col Sum() 関数の 2 番目の要素がオープン コードでは無効になるのです。
Re: 特定の行を選択して Col (Sum) 関数を使用する@txnelson :
ありがとう 。 私はこのアプローチには精通していましたが、私が驚いたのはその方法でした。 @MS同じ問題を解決していました。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected()))); // This Works
dt << select Where(:age == 12);
n = Col Sum(:age,Selected()); // This yields an error 4行目はあなたのソリューションで簡単に置き換えることができることは理解していますが、つまり、それが私のgotoソリューションです。
n = Sum(:age[dt << Get Selected Rows]);
私の場合、なぜこのコード行でエラーが発生するのかわかりません。
n = Col Sum(:age,Selected());
ドキュメントには、この機能が存在することが示されていません(少なくとも JPM 12 には)。この新しいトリックには本当に興奮していましたが、この場合には機能するようでした@MS先ほどの質問を解決しました。 まったく同じコードが列数式では機能するのに、外部ではエラーがスローされる理由を説明していただけますか?
ウダイ
Re: 特定の行を選択して Col (Sum) 関数を使用するCol Stat() 関数は主に列数式で役立ちますが、オプションのグループ化引数を使用すると、スタンドアロン関数としてはまったく機能しません (代わりに Summarize() を使用します)。
私の古い投稿は、手動 (またはスクリプト) で行を選択するだけで列を動的に更新する方法を示すことを目的としていました。 非常に役立つというよりは、巧妙なトリックです...
例:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Conditional sum", Formula(Col Sum(:age, Selected())));
dt << select Where(:age == 12);
// Or select rows by hand and see how numbers change dynamically
Re: 特定の行を選択して Col (Sum) 関数を使用するやりたいことは、データ テーブル内の値をデータのベクトルとして参照し、選択した行の行列をそれに渡す機能を使用することです。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age == 12);
n = Sum(:age[dt << Get Selected rows]);Re: 特定の行を選択して Col (Sum) 関数を使用する@ian_jmp / @MS / @txnelson - 何かご意見は ?
Re: 特定の行を選択して Col (Sum) 関数を使用する
この解決策は特定のバージョンの JMP でのみ機能しますか?
JMP 12 を使用しているため、このエラーが繰り返し発生します。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << select Where(:age ==12);
n = Col Sum(:age,Selected());
これが私のログです
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << select Where( :age == 12 );
n = Col Sum( :age, Selected/*###*/() );
行番号が設定されていないか、 'Selected' 、 Selected/*###*/() のアクセスまたは評価の範囲内にありません
Re: 特定の行を選択して Col (Sum) 関数を使用するはい、複数のグループ化変数がサポートされています。
Re: 特定の行を選択して Col (Sum) 関数を使用するありがとう!
これこそ私が探していたものです。
ということは、さらに進んで言ってみましょうということですか?コル・サム( :付加価値税を除く純収益、 :年、:代理店)?
Re: 特定の行を選択して Col (Sum) 関数を使用する列の式で ColSum() を使用します。 式コル・サム( :付加価値税を除く純収益、 :年)によってグループ化された合計 (累積合計ではありません) を返します。年。
行の選択に応じて動的に変化する ColSum() については、次の式を試してください。
コル・サム( :付加価値税を除く純収益、選択済み() )
Re: 特定の行を選択して Col (Sum) 関数を使用する答えは次に何が起こるかによって決まるかもしれません。 確かに次のことができます。
NamesDefaultToHere(1);
// (1) Get some data
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
// (2) Get summary info into a list and a vector
Summarize(groups = By(:sex), groupMeans = Mean(:height));
// (3) Make a table using the summary info
dt2 = NewTable("Height by Gender",
NewColumn("Gender", Character, Nominal, Values(groups)),
NewColumn("Mean Height", Numeric, Continuos, Values(groupMeans))
);
(Summarise のその他のオプションについては、『JSL Scripting Guide』を参照してください)。
ステップ 3 が必要な場合は、「表 > 概要」または「分析 > 表作成」のいずれかを使用する方がよいでしょう。
選択内容を表現できる限り、任意の行セットを集計することもできます。