反復の質問:データフィルタリング、およびファイル保存 - 命名<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
特定のデータフィルタに従って解析を繰り返し実行するコードを設定し、新しいデータフィルタに対してその解析を繰り返す方法を考えています。データフィルタは、列に1または0があることに基づいて行を除外するように設定されており、列は順番に並んでいます。これがスクリプトの例です。
dt = 開いた ( "Hyperspectral_DataCleanedOrdered.jmp" ) ;
dt << データフィルタ (
モード ( 含める ( 1 )) 、
逆 、
フィルタを追加 (
列 ( Rand001 ) 、
どこで ( : Rand001 > = 0.875 & : Rand001 <= 1 )
) 、
) ;
doDiscriminant =
経験値 (
ダ = dt << 判別式 (
バツ ( : サイトの種類 ) 、
Y (
:
: 名 ( "366" ) 、
: 名 ( "367" ) 、
: 名 ( "368" ) 、
: 名 ( "369" ) 、
: 名 ( "370" ) 、
: 名 ( "371" ) 、
: 名 ( "372" ) 、
: 名 ( "373" ) 、
: 名 ( "374" ) 、
: 名 ( "375" ) 、
: 名 ( "376" ) 、
: 名 ( "377" ) 、
: 名 ( "378" ) 、
: 名 ( "379" ) 、
: 名 ( "380" ) 、
: 名 ( "381" ) 、
: 名 ( "382" ) 、
)
) ;
にとって ( 私 = 1 、私 <= 10年 、私 ++、
doDiscriminant ;
ダ << StepwiseVariableSelection ;
にとって ( k = 1 、 k <= 私 、 k ++、ダ << 踏み出す ) ;
ダ << applyThisModel ;
ダレップ = ダ << 報告書 ;
ダレップ [ "スコアサマリー" ] << 選択する ;
ダレップ [ "スコアサマリー" ] << ジャーナル ( "test1" ) ;
現在のジャーナル () << 追加 ( テキストボックス ( "テスト1" )) ;
ダレップ << ウィンドウを閉じる ;
) ;
現在のジャーナル () << ジャーナルを保存 ( "Rand001" ) [理想的には、この名前は繰り返しごとに更新されます]
判別分析は、一定量の段階的変数選択の繰り返し(10)に対してループしています。判別分析の1〜10回の繰り返しごとに、データフィルタの繰り返しごとに発生させることができます。データフィルタは、列(Rand001、Rand002、... Rand100)を読み取るように設定されており、列の内容に基づいて特定の行を除外します。
また、繰り返しごとに更新される名前でジャーナル/テキストファイルを繰り返し保存する簡単な方法を見つけることができませんでした。そのため、ここでも役に立つアドバイスになります。
ありがとうございました!
再質問:データのフィルタリング、およびファイルの保存 - 命名最終的に何を目指しているのかはわかりませんが、これはデータフィルタを繰り返し更新する1つの方法です。
dt = 開いた ( "$ SAMPLE_DATA \ big class.jmp" ) ;
dt << 新しいコラム ( "Rand001" 、式 ( ランダムユニフォーム ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand002" 、式 ( ランダムユニフォーム ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand003" 、式 ( ランダムユニフォーム ( 0 、 1 ))) ;
// "空白"のデータフィルタオブジェクト
df = dt << データフィルタ ( モード ( 含める ( 1 )) 、逆 ) ;
にとって ( 私 = 1 、私 <= 3 、私 ++、
コル = カラム ( "Rand00" || チャー ( 私 )) ; //動的col変数
df << すべて削除 ; // dfから古い列を削除します
df << フィルタを追加 ( 列 ( コル ) 、どこで ( コル > 0.875 )) ; //現在の列を追加
待つ ( 2 ) ; //デモ目的のためだけに遅らせる
) ;
しかし、上記のVinceのアプローチでは、データフィルタを使用する代わりにwhere句を分析プラットフォームに含めることが、ここではもっと理にかなっているかもしれません。
再質問:データのフィルタリング、およびファイルの保存 - 命名ビンス、
この情報をありがとう、私の現在の方法はおそらく最も効率的ではないことを私は理解しています。提案されたコードのWhereセグメントが、信頼できるRand列のセル値が1の行を実際に除外する場合、構文は何ですか?これで私の問題は解決します。
再質問:データのフィルタリング、およびファイルの保存 - 命名それでは、除外する目的は何でしょうか。除外しているだけで毎回異なるグラフが表示される場合は、Whereを使用してそれを実行できます。
それ以外は、列の範囲colをしないでください。
:col == {1} //動作しません
col == 1 //動作します
再質問:データのフィルタリング、およびファイルの保存 - 命名その助けをありがとう、それは私に私の次のステップについてのいくつかの洞察を与えてくれました。しかし、私が探していたのは、DAを繰り返し実行するのではなく、データフィルタを繰り返し適用することでした。例、これがサンプルコードです。
dt = 現在のデータ表 () ;
コル = カラム ( "Rand00" || チャー ( 私 )) ;
dt = 開いた ( "$ SAMPLE_DATA \ big class.jmp" ) ;
dt << 新しいコラム ( "Rand001" 、式 ( ランダム整数 ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand002" 、式 ( ランダム整数 ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand003" 、式 ( ランダム整数 ( 0 、 1 ))) ;
doDataFilter =
コル = カラム ( "Rand00" || チャー ( 私 )) ;
dt << データフィルタ (
モード ( 含める ( 1 )) 、
逆 、
フィルタを追加 (
列 ( "Rand00" || チャー ( 私 )) 、
どこで ( : コル == { 1 )
//ここで(: "Rand00" || char(i)> 0.875&: "Rand00" || char(i)= 1)
) 、
) ;
にとって ( 私 = 1 、私 <= 3 、私 ++、 doDataFilter ;
コル = カラム ( "Rand00" || チャー ( 私 )) ; ) ;
このコードはエラーを読み取ります。
WHERE句が正しく指定されていません。'Equal'へのアクセスまたは評価において、col == / * ### * / {1} / * ### * /
フィルタが各反復で指定された行に沿って移動するように、'i'文字を含めるようにWHERE句を記述する方法はありますか。
再質問:データのフィルタリング、およびファイルの保存 - 命名私はあなたの質問すべてに答えたとは思いませんが、これはあなたを正しい方向に導くかもしれません。
dt = 開いた ( "$ SAMPLE_DATA \ big class.jmp" ) ;
dt << 新しいコラム ( "Rand001" 、式 ( ランダム整数 ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand002" 、式 ( ランダム整数 ( 0 、 1 ))) ;
dt << 新しいコラム ( "Rand003" 、式 ( ランダム整数 ( 0 、 1 ))) ;
にとって ( 私 = 1 、私 <= 3 、私 ++、
コル = カラム ( "Rand00" || チャー ( 私 )) ;
ダ = dt << 判別式 (
バツ ( : 性別 ) 、
Y ( : 高さ ) 、
どこで ( コル [ 行 ()] == 1 ) 、
分類数を表示 ( 1 ) 、
バイプロットレイポジション ( [ 0 、 15.5914608488282 、 1.5 ] )
) ;
ダ << タイトル ( "Rand00" || チャー ( 私 )) ;
ダ << 再描画 ;
ダ << ジャーナル ;
ダ << ウィンドウを閉じる () ;
)
where文かローカルデータフィルタのどちらかを使います。
それが少なくともいくらか役に立つことを願っています。