データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?初めて JMP を使い始めたばかりなので、基本的な質問で申し訳ありません。
大規模なデータセット (14 列 x 20,000 行) があり、特定の列範囲 (列 4 ~ 14) で 0 または 1 を持たないすべての行を識別して削除するスクリプトを作成しようとしています。 このデータセットはさらに大きなデータセットからのものであるため、サブセットには完全に空の行がいくつかあります。 これが私がやりたかったことの例です:
- - - - -
0 0 1 - 0
- - - - -
1 - - - -
は次のようになります:
0 0 1 - 0
1 - - - -
コードを書き始めましたが、行き詰まってしまいました。For Each Row の後に何をすればよいのかわかりません。 私は、このスクリプトが一度に 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: データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?以前の返信で示されているように、JMP でタスクを実行するには多くの方法があります。
すべての列 4 ~ 14 が数値の場合、このスクリプトは欠損値を持つ行のみを削除することもできます。
dt = Current Data Table();
dt << Delete Rows(Loc(Is Missing(V Mean(dt[0, 4 :: 14]`))));
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: データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?または、スクリプトを作成したい場合は、これが私の提案です。
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: データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?Missing Data Pattern プラットフォームを確認する必要があると思います。
テーブル=>欠損データパターン
あなたの説明からすると、それはあなたのニーズを満たしているように思えます。指定した列が分析され、生成されたデータ テーブルから、すべての値が欠落している列を選択して削除できます。
Re: データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?これはスクリプトである必要がありますか?
これらの特定のセルが欠落している行が 1 行だけ見つかった場合は、欠落しているセルを選択します。
次に、[行] メニューに移動し、[行の選択] > [一致するセルの選択] を選択します。
これで、これらの列のデータが欠落しているすべての行が選択されます。 「行」>「行の削除」を選択します。
Re: データセットのすべての列でデータが欠落している行を削除するにはどうすればよいですか?本当にありがとうございます。素晴らしい秘密のコレクションです。
- データテーブルのインデックス作成
- V Mean() - 「欠落」エントリに関する情報を集計する
- 場所()
- 行を削除 (行) **)
**) をwhere(dt, が欠落しています...))と組み合わせると、次のものよりも桁違いに高速になります。
+ where() を選択