データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?私の質問がいかに基本的であるかをお詫びします。私は初めてJMPを使い始めたばかりです。
大規模なデータセット(14列x 20,000行)があり、特定の範囲の列(列4〜14)に対して0または1を持たないすべての行を識別して削除するスクリプトを作成しようとしています。 このデータセットはさらに大きなデータセットからのものであるため、サブセット内に完全に空の行がいくつかあります。 これが私がやりたかったことの例です:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
になります:
0 0 1 - 0
1 - - - -
コードを書き始めましたが、行き詰まりました。ForEachRowの後で何をすべきかわかりません。 このスクリプトが一度に1行を参照し、特定のセルに0または1がない場合は、次の列で0または1を検索し、最後に到達した場合に検索することを期待していました。 0または1のない行の場合、その行全体が削除されます。 これまでの私のコードは次のとおりです。
dt=Open("File Name")
colnames = dt << get column names( numeric,string );
For( i = 4, i <= N Items( colnames ), i++,
For Each Row(If(:colnames != 0 | :colnames != 1), Continue()
)
);使うことを考えていました
<< Delete Rows
、このフォーラムの他のいくつかの質問で見ました。 これがスクリプトで複雑すぎる場合、これを行うためのより良い方法はありますか?
スクリプティングRe:データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?これはスクリプトである必要がありますか?
これらの特定のセルが欠落している行が1つだけ見つかった場合は、欠落しているセルを選択します。
次に、[行]メニューに移動し、[行の選択]> [一致するセルの選択]を選択します。
これで、これらの列のデータが欠落しているすべての行が選択されます。 「行」>「行の削除」を選択します。
Re:データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?欠測データパターンプラットフォームを確認する必要があると思います。
テーブル=>欠測データパターン
あなたの説明から、それはあなたのニーズを満たすように思えます。指定した列を分析し、生成されたデータテーブルから、欠落しているすべての値を選択して削除することができます。
Re:データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?または、スクリプトを作成したい場合は、これが私の提案です。
dt << New Column("Selected", Character, Nominal, Formula(
If(Is Missing(:Column4) | Is Missing(:Column5)|...until column14,
"Yes",
"No"
)
));
dt << Select Where(:Selected == "Yes");
dt << Delete Rows;Re:データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?このスクリプトがリクエストを処理します。 他の返信と完全に一意ではありません。
Names Default to Here( 1 );
// get reference to target data table
dt = Current Data Table();
// get all the columns for missing value check
cols = dt << Get Column Names;
// obtain missing value patterns
missing = Current Data Table() << Missing Data Pattern(
Columns( Eval( cols ) ),
Output Table( "Missing Data Pattern" )
);
// make character string representing missing values in all columns
n missing = N Items( cols );
all missing = Repeat( "1", n missing );
// find the row of patterns where all columns are missing.
missing << Select Where( :Patterns == all missing );
// delete the linked rows in the original table
dt << Delete Rows;
// clean up
Close( missing, No Save );
Re:データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?以前の返信で示されているように、JMPでタスクを実行する方法はたくさんあります。
4〜14列すべてが数値の場合、このスクリプトは、値が欠落している行のみを削除するためにも機能するはずです。
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));