式列を使用して、他のカテゴリ型列を組み合わせて列を要約することがよくあります。 例えば、「洗剤」サンプルデータでは、柔らかさと温度の各組み合わせの平均数を知りたいと思うかもしれません。これを行うための3つの方法が以下にあります。私が使用する方法はデータテーブルのサイズと私のオーディエンスであるかによって異なります。 もっと簡単な方法はありますか?
移植性の問題から、カスタムの 'Col Mean by Multiple Columns()'関数を含むアドインを避けています。
Tabluate
tabulateを使用して新しいテーブルにサマリー統計を作成し、その結果を元のデータテーブルに結合します。
Pro:非常に複雑な要約統計を簡単に作成できます。
欠点:ライブではないため、分析中に参照列が変更された場合はデータを更新する必要があります。ユーザーがデータのソースを追跡することはできません。
ビニング式
ビニング式を作成し、Col Mean()関数の2番目の引数を使用してそのビンを参照します。
Pro:セットアップが簡単で、ユーザーが従うのが比較的簡単です。
欠点:データテーブルを乱雑にし、この式以外では使用できない余分な列を作成します。特に多数のサマリー列を作成する場合は特にそうです。
dt = Open( "$sample_data/Detergent.jmp" );
//binning formula
dt << New Column(
"Bin by Temp and Softness",
Character,
"Nominal",
Formula( :softness || "-" || :temperature )
);
//summary statistic
dt << New Column(
"Mean Count by Temp and Softness Binned",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Mean( :count, :Bin by Temp and Softness) )
);
式の中でJSLを使用してビンを識別し、要約統計量を計算する
データテーブル内の類似した行を特定し、そのデータの要約統計量を計算します。 JMPはこの方法では結果をキャッシュしないので、テーブル全体がすべての行について再評価されると思います。いずれにせよ、大きなデータテーブルでは遅くなります。
Pro:多大な柔軟性
短所:計算が遅いため、ユーザーが従うことは非常に困難です。
//summary statistic by bin
dt << New Column(
"Mean Count by Temp and Softness Direct",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
matches = Function( {a, b},
out = {};
For( i = 1, i <= N Items( a ), i++,
found = "no";
For( j = 1, j <= N Items( b ), j++,
If( a[i] == b[j],
found = "yes"
)
);
If( found == "yes",
out = Insert( out, a[i] )
);
);
out;
);
soft = Loc( :softness << get values(), :softness );
temp = Loc( :temperature << get values(), :temperature );
Mean( (:count << get values())[matches( soft, temp )] );
)
);すごい、助かりました!JMPの最近のバージョン(JMP 11以降)では、ColMean()で複数の列パラメータを直接使用できることを説明しました。したがって、連結するのではなく、次のようにします。
Col Mean( :count, :softness, :temperature )
私はとても慣れている私はまだそれをやっていることを連結する。 古い習慣は激しく死ぬ:)
さらに、JMP 12以降では、データテーブルにインスタントフォーミュラを使用して、テーブル内のそれらのカラムを選択し、それらのヘッダの1つを右クリックして、[New Formula Column]> [Group By]を選択できます。

次に、count列を選択し、ヘッダーを右クリックして、[New Formula Column]> [Aggregate]> [Mean]の順に選択します。

これはあなたのために公式を自動的に設計するでしょう。あなたの新しいユーザーにとってとてもフレンドリー。
これは完璧です、そしてあなたがそれを指摘すればとても明白です。
ありがとうございます。
こんにちはああ 、
私はこのことだけをかなり頻繁にやっています。私にとって効果的な方法の1つは、Col Mean(:column、byvariable)のような列式を使用することです。2番目のパラメーターには、(テーブルに追加の列を作成するのではなく)2つのカテゴリー列を直接連結します。洗剤の例では、これは次のようになります。
Col Mean( :count, :softness || :temperature )
これはあなたが必要とすることをしますか、またはあなたが探している何か他のものがありますか?
@julian