データ テーブルがあり、欠落行を含む複数の一意の値を含む列を集計したいと考えています。すべての行が同じ列は退屈なので、より興味深いものだけを見たいと思います。
これを行うにはいくつかの方法がありますが、最も簡単なのは次の方法だと思います。
列 > 列マネージャに移動します
結果のテーブルには、各列に一意の項目がいくつあるかを示す N Unique の列が含まれます。また、その列に欠損値がいくつあるかを示す N Missing の列も含まれます。
残念ながら、連続列の N Unique は自動的に計算されませんが、赤いポップアップ メニューには、すべての数値列の計算を強制するオプションがあります。
また、そのテーブルを使用して、一意の値が 1 つだけある列を選択することもできます。それらの列は元のテーブルで選択されるため、非表示にして除外することができ、それらの「興味のない」列を強制的に表示する必要がなくなります。
私は技術嫌いなので、残念ながら JMP17 です。ありがとうございます。スクリプト化できると思いますが、すでに誰かが解読したかどうか気になりました。
アドインの「宣伝」はあまり好きではありませんが、 Analyse Columns は役に立つかもしれません。パブリック バージョンは動作するはずです (JMP17 でも動作します)。ループ付きのシンプルなスクリプトでも、このような列を簡単に削除/除外/非表示にしたり、その他の処理を行ったりできます。
素晴らしいアドイン、Jarmo! 少し手を加える必要がありますが、素晴らしいと思います。以下は、ウェハーごとに 1 つ以上の一意のエントリがある列を要約するために私が作成したスクリプトです。
dt = Current Data Table();
colList = Current Data Table() << Get Column Names( String );
dcols = {};
For( i = 1, i <= N Items( colList ), i++,
If( Contains( colList[i], " / " ),
Insert Into( dcols, colList[i] )
)
);
Show( dcols );
Split_Cols = {};
Insert Into( Split_Cols, :wafer );
For( j = 1, j <= N Items( dcols ), j++,
summarize(unique_values = by( Column(dcols[j]) ));
if (N Items(unique_values) > 1, Insert Into( Split_Cols, dcols[j] ) );
);
Show(Split_cols);
Current Data Table() << Summary(
Group( Split_cols ),
Freq( "None" ),
Weight( "None" )
);ほとんどの場合、for ループよりも For Each、Filter Each、Transform Each を使用することをお勧めします。これらはより高速で読みやすいからです。しかし、問題が発生した場合、速度が遅いためデバッグや対処がより面倒になり、厄介なバグ/機能があります。幸いなことに、このバグ/「機能」は、このような単純なケースには存在しません ( Function() のデフォルト ローカルと Each 関数の問題)。欠損値を「有効な」値と見なすかどうかはわかりませんので、Filter Each ループ内で Remove From をコメント アウトしたままにしました。
Names Default To Here(1);
dt = Current Data Table();
collist = dt << Get Column Names("String");
valid_cols = Filter Each({colname}, collist,
Summarize(dt, vals = By(Eval(colname)));
//Remove From(vals, Contains(vals, "")); // drop missing values if necessary
N Items(vals) > 1;
);
dt_summary = dt << Summary(
Group(valid_cols),
Freq("None"),
Weight("None"),
//Link to original data table(0),
Output Table("Non-Unique Summary")
);
簡単なデモテーブルを作成するスクリプトです
dt = New Table("demo",
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a", "a", "a", "a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b", "b", "b", ""})),
New Column("Column 3", Character, "Nominal", Set Values({"", "", "", ""})),
New Column("Column 4", Character, "Nominal", Set Values({"c", "d", "", ""})),
New Column("Column 5", Character, "Nominal", Set Values({"c", "d", "e", "f"}))
);
このアドインは、JMP に列マネージャーが追加される前に作成されたものですが、私は今でもほとんどの場合、列マネージャーよりもこのアドインの方が好きです。これらのアドインには異なるユースケースがあり、列マネージャーは、いくつかの優れた追加機能で列ビューアー プラットフォームを置き換えようとしており、列分析は、要約統計の観点からデータがどのようになっているかをすばやく確認する必要があったため、パンダ プロファイリング (ydata プロファイリングに名前が変更されたようです)からインスピレーションを得ていると思います。