同じカテゴリで欠損値を持つ列をすべて削除するための JSL 実装添付ファイルでは、「Store」フィールドがAとBの2つのStoreに分割されています。同じStoreに対応する列全体のすべてのセルに値が欠損値が含まれている場合、添付の「期待される結果」に示すように、列全体を削除します。これをJSLで実装するにはどうすればよいですか?
各列の欠損値はカウントできるのですが、同じストアに対応するすべてのセルが欠損値であるかどうかを確認する方法が見つかりません。何か良い方法があれば教えてください。実際には列数が非常に多く(数万列)、時間のかかる計算方法では時間がかかりすぎます。
自動化とスクリプトRe: 同じカテゴリですべての欠損値を持つ列を削除するための JSL 実装:バナナ価格と:ドリアン価格が保持されるのはなぜですか? すべての「A」:バナナ価格が欠落しており、すべての「B」:ドリアン価格が欠落しています。
Re: 同じカテゴリですべての欠損値を持つ列を削除するための JSL 実装こんにちは、
あなたのルールに忠実に従い、スクリプトを使わないオプションを考案しました。しかし、 @mmarchandFSLRさんが指摘したように、バナナとドリアンが除外/削除されるため、結果はあなたの「結果」と一致しません。
1) すべての列を積み重ねます(添付の例を参照)
2) 次の式を使用します。
Col Sum( Is Missing( :Data ), :Store, :Label ) / Col Sum( 1, :Store, :Label )
3) 次の数式を使用して、マスター チェック列「ROWS TO DELETE」を追加します。
Col Max( :MISSING by STORE PCT, :Label )
4) マークされた行を削除する
5) 結果のテーブルを「ラベル」で分割します。
最高、
TS
Re: 同じカテゴリですべての欠損値を持つ列を削除するための JSL 実装次のような表を作成することをお勧めします。

次に、テーブルを読み取って、削除する必要がある各ストアの N と N の不足を満たす列のリストを作成できます。
テーブルを作成するためのサンプルスクリプトは次のとおりです。
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
Tabulateプラットフォームを使って表を作成することもできますが、列数が数千に及ぶとのことです。その場合、Tabulateは適さないと思いますが、上記のスクリプトで対応できるはずです。