サマリーテーブルを取得する方法を知りたいのですが、追加の統計があります。
例えば、モード()は数式で使用できる関数ですが、これは機能しません。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Summary( Group( :Age ),
subgroup( :sex ),
Mode( :Height )); // Mode isntead of meanまた、グループの最後または最初の番号を取得して、表を要約したいと思います。
FWIW(そしてあなたが少しJSLを知っているなら)、あなたはこの種のことをすることができます:
Names Default To Here( 1 );
// Sample data
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Invisible Distribution with 'By' group(s)
dist = dt << Distribution(Continuous Distribution(Column( :height ),Customize Summary Statistics(Mode(1))), By(:age, :sex), Invisible);
// Get the Summary Stats
dt2 = Report(dist[1])[TableBox(2)] << makeCombinedDataTable;
Report(dist[1]) << closeWindow;
// Retain only the Mode
dt3 = dt2 << Subset(Rows(dt2 << getRowsWhere(:Column 1 == "Mode")));
dt3 << setName("Mode Values");
Column(dt3, "Column 1") << setName("Statistic");
Column(dt3, "Column 2") << setName("Value");
Close(dt2, NoSave);
私も検討しますJMPウィッシュリスト。
やあ@FN 、
表の要約でモードがオプションではない場合でも、要求しているものを取得する方法はたくさんあるはずです。 手動で、または次のようにクリックして、配布プラットフォームの追加の要約統計量テーブルでモードを要求できます。 @ian_jmp提案します。 それ以外の場合は、brady_bradyによるアドインを使用してみてください。
Extended-Summary-Statistics-Add-in-for-JMPメニューからモードを参照します。
または、次のスクリプトを試してください。
Names Default To Here( 1 );
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// get frequencies for modes
dt2 = dt << Summary(
Group( :Age, :sex, :height ),
Link to original data table( 0 )
);
// delete all rows that are not modes
dt2 << select where( Or( :N Rows != Col Max( :N Rows, :age, :sex ), :N Rows == 1 ) );
dt2 << delete rows;
// indicate first and last values per group - Not min and max unless table is first sorted!!!
dt << New Column( "id age", Numeric, "Continuous", Format( "Best", 12 ), Formula( Sum( :age[Index( 1, Row() )] == :age ) ), eval formula, );
dt:id age << delete formula;
// remove all rows that are not first or last
dt << select where( And( :id age != Col Max( :id age, :age ), :id age != 1 ) );
dt << delete rows;
// create one table with all data and sort it
dt3 = dt << concatenate( dt2, Create source column );
dt3 << New Column( "Value",
Character,
"Ordinal",
Formula( If( :id age == 1, "First", :id age > 1, "Last", :N Rows > 1, "Mode" ) ),
Set Property( "Value Order", {Custom Order( {"First", "Mode", "Last"} ), Common Order( 0 )} ),
);
dt3 << sort( By( :age, :sex, :Value ), Order( Ascending ), replace table );
ビッグクラスの場合、すべてのグループにクリアモードがあるわけではないことに注意してください。私のアプローチはそれを取り除くことでした。最高周波数は1に等しかったです。
それが機能するかどうか、または何を改善する必要があるかをお知らせください。
ロン
これらを取得する方法として配布プラットフォームを使用する素晴らしいトリック。
ここにリクエストを追加しました。サマリーテーブル関数を定義済みの関数(モード、カート、スキューなど)に拡張する
私はこのアプローチをテストしていましたが、実行可能ではありません。恐れています。
JMPは、大きなテーブル(50万行と数百列)の多くのアイテムを再グループ化するときに、showdistributionを使用するには時間がかかりすぎます。
逆に、サマリーテーブルのデフォルト関数は非常に高速に計算されます。