サブセットスクリプト<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP ユーザーの皆さん、こんにちは。
大きなデータ ファイルをサブセット化するスクリプトを生成することはできますが、これらに手動で名前を付け、2 番目と 3 番目のサブセット スクリプトを通じてすべてを個別に実行する必要があります。 サブセットコマンドを繰り返し実行し、ファイルを保存してサブセット定義を含める方法はありますか?
例: ファイル「Colors」を列 1 (赤、青、緑) でサブセットして、ファイル Colors.red.jmp、Colors.blue.jmp、Colors.green.jmp を作成して保存し、これらを列 8 (明るい、明るい) でサブセットします。 、暗い)ファイルを作成して保存します
Colors.red.bright.jmp、 Colors.red.light.jmp、 Colors.red.dark.jmp、 Colors.blue.bright.jmp、 Colors.blue.light.jmp、 Colors.blue.dark.jmp、 Colors。 green.bright.jmp、Colors.green.light.jmp、Colors.green.dark.jmp。
列の位置は異なる場合があります。
ありがとう !!!
Re: サブセットスクリプトそれでもうまくいきませんでした。 時間(30)、(90)なども追加しました。 ファイルを保存保護することはできました。つまり、保存するかどうかを指定せずにファイルを閉じることはできませんでしたが、名前は依然として myfile 2 3.jmp のサブセットのサブセットのままでした。 サブセット変数のリストが何らかの形で間違っているのではないかと考えています。 週末にさらにトラブルシューティングを行う予定です。ここで、私たちのバージョンの JMP の使用に慣れている人に助けを求めることができます。
ご協力とアドバイスに心より感謝いたします。MS さん、素晴らしい週末をお過ごしください。
Re: サブセットスクリプトパフォーマンスの問題である可能性があります。 両方の For ループ内に Wait(0) コマンドを挿入して、JMP がテーブルを保存する前にテーブルが完了していることを確認してください。
Re: サブセットスクリプトこれはおかしい。 同じディレクトリ内の dt を開くために使用したため、パスは正しいです。 すべてのファイルが作成されますが、「MyFile 2 3.jmp のサブセットのサブセット」、「MyFile 2 2 2.jmp のサブセットのサブセット」などの名前が付いています。これらのファイルはまさに私が望むものであり、驚くべきことに、このスクリプトはそれらを作成しますが、残念ながら、それらに正しく名前を付けて保存しません。 最悪の場合、手動で名前を付けますが、それでもかなりの時間を節約できます。
ご尽力いただきありがとうございます。
エリック
Re: サブセットスクリプトJMP 9.0.3 でスクリプトを試してみたところ、JMP 10 と同様に完全に動作しました。
パス変数を確認してください。 これは文字列であり、/ で始まり / で終わる必要があります。
たとえば、私の Mac ではこれは機能しています: myPath = "/Users/MS/Desktop/"
Re: サブセットスクリプトこんにちは、MSさん
それはとても近かったです!すべてのサブセットが作成されましたが、テーブルはまったく保存されませんでした。 次のメッセージが表示されました: ファイルを保存できません。 不明なデータターゲット。
JMP 9 を使用しているので、ファイルを作成するコマンドに違いがあるのか、それとも何か間違っているのでしょうか? スクリプトに正しいパスを入力しました。
ありがとう、
エリック
Re: サブセットスクリプト少なくとも JMP 10 には、「サブセット化」チェックボックスがあります。 選択すると、選択した列のレベルごとのサブセットが自動的に生成されます。 by-column の数がわかっていれば、JSL でその関数を実装するのは簡単です。 ただし、これを一般化するのは想像以上に困難でした。
ただし、このアプローチは、順次生成されたサブセットをリスト (リスト内) に挿入することに基づいており、機能するようです。
//テーブルの例
dt =新しいテーブル( "色" 、
行の追加( 12 ) 、
新しい列( "色" 、
キャラクター、
公称、
設定値( { "赤" 、 "赤" 、 "赤" 、 "赤" 、 "青" 、 "青" 、 "青" 、 "青" 、 "青" 、 "緑" 、 "緑" 、 "緑" } )
) 、
新しい列( "強度" 、
キャラクター、
公称、
設定値(
{ "明るい" 、 "明るい" 、 "暗い" 、 "ライト" 、 "ライト" 、 "ライト" 、 "ライト" 、 "暗い" 、 "暗い" 、 "暗い" 、 "ライト" 、 "明るい" }
)
) 、
新しい列( "終了" 、
キャラクター、
公称、
設定値(
{ 「マット」 、 "空欄" 、 「マット」 、 "空欄" 、 「マット」 、 "空欄" 、 「マット」 、 "空欄" 、 「マット」 、 "空欄" 、 「マット」 、 "空欄" }
)
) 、
新しい列( 「コレンシティ」 、キャラクター、公称)
) ;
各行について( :コレンシティ=色||強度||終了) ; // 動作確認のためだけに…
// サンプルテーブルの終了
// スクリプトはここから始まります
コル= {色、強度、終了} ; // 任意の nr の列ごとのサブセット (階層順)
nt = Nテーブル() ; //現在開いているテーブルの数
サブリスト=評価リスト( { dt <<サブセット(に(コル[ 1 】 ) )} ) ; //第 1 レベルのサブセット
//下位レベルのサブセットを再帰的に作成します
ために(私= 2 、私<= N 個のアイテム(コル) 、私++、
に挿入(サブリスト、評価リスト( {評価(サブリスト[私- 1 】 ) <<サブセット(に(コル[私】 ) )} ) )
) ;
// すべてのサブセットに名前を付けて保存します
私の進路= "道" ; // 希望のパスに変更
ために(私= 1 、私<= Nテーブル() - nt 、私++、
テレビ=データ表(私) <<テーブル変数名を取得する; // レベルはテーブル変数として保存されます
サブネーム= {} ;
ために( j = 1 、 j <= N 個のアイテム(テレビ) 、 j ++、
に挿入(サブネーム、データ表(私) <<テーブル変数を取得する(テレビ[ j ] ) )
) ;
に挿入(サブネーム、 dt <<名前を取得する) ;
逆に入る(サブネーム) ;
データ表(私) <<保存(私の進路||連結アイテム(サブネーム、 「。」 ) ) ;
) ;
// スクリプトを終了 // すべて(データ テーブル)を閉じる;
Re: サブセットスクリプトPMrozさん、ありがとうございます。
問題は、中間ファイルを保持する必要があり、私が示した例は作成されたものであり、列名が毎回変更されることです。
ありがとう、
エリック
Re: サブセットスクリプトいくつかの異なる方法で大規模なデータセットをサブセット化し、各サブセットに対して同じ分析を実行する必要があるアプリケーションがあります。個別のデータセットを作成するのではなく、SELECT と EXCLUDE を組み合わせて、大規模なデータセット内のデータを分析できる状態にします。例えば:
dt =新しいテーブル( 「色の例」 、
行の追加( 12 ) 、
新しい列( "色" 、キャラクター、公称、
設定値(
{ "赤" 、 "赤" 、 "赤" 、 "赤" 、 "青" 、 "青" 、 "青" 、 "青" 、 "青" 、
"緑" 、 "緑" 、 "緑" } ) ) 、
新しい列( "強度" 、キャラクター、公称、
設定値(
{ "明るい" 、 "明るい" 、 "暗い" 、 "ライト" 、 "ライト" 、 "ライト" 、 "ライト" 、 "暗い" 、
"暗い" 、 "暗い" 、 "ライト" 、 "明るい" } ) ) ) ;
番号=狭い( dt ) ;
カラーリスト= { "赤" 、 "青" 、 "緑" } ;
強度リスト= { "明るい" 、 "ライト" 、 "暗い" } ;
ために(私= 1 、私<=ナイアイテム(カラーリスト) 、私++、
ワンカラー=カラーリスト[私】 ;
ために( k = 1 、 k <=ナイアイテム(強度リスト) 、 k ++、
one_intensity =強度リスト[私] ;
// この色と強度に一致しない行をすべて除外します
dt <<場所を選択してください( :色==ワンカラー& :強度== one_intensity )
<<行選択を反転する<<除外する;
未選択=番号 -狭い( dt <<選択した行を取得) ;
dt <<選択をクリア;
もしも(未選択> 0 、
// ここで dt の分析を行います。除外されていない行のみが使用されます。
// 除外された行を無視する唯一のコマンドは、Tables >> Summary です。
印刷する( "行数: " ||文字(未選択) || " 色: " ||ワンカラー||
" 強度: " || one_intensity ) ;
) ;
// 次の選択のためにクリーンアップします
dt <<行の状態をクリアする;
) ;
) ;