<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />データセット内で特定したい特定の値のリストがあります (:MeasurementGroup 列の特定の値)。「興味の価値?」という新しいコラムを作成しました。インジケーターを生成する式を使用: YES または NO
dt1 << New Column( "関心のある値?",
キャラクター、
公称、
式( If(
:MeasurementGroup == "A", "YES",
:MeasurementGroup == "B", "YES",
:MeasurementGroup == "C", "YES",
:MeasurementGroup == "D", "YES",
:MeasurementGroup == "E", "YES",
:MeasurementGroup == "F", "YES",
:MeasurementGroup == "G", "YES",
:MeasurementGroup == "AA", "YES",
:MeasurementGroup == "BB", "YES",
:MeasurementGroup == "CC", "YES",
:MeasurementGroup == "ZZ", "YES",
:MeasurementGroup == "ABC", "YES",
:MeasurementGroup == "12 月", "はい",
:MeasurementGroup == "WSA", "YES",
:MeasurementGroup == "RSS", "YES",
:MeasurementGroup == "DVC", "YES",
:MeasurementGroup == "SFS", "YES",
:MeasurementGroup == "AAZ", "YES",
:MeasurementGroup == "ZZA", "YES",
:MeasurementGroup == "TTT", "YES",
"いいえ") )
);
私のデータテーブルには 100 万行近い行があり、データを入力する前に少しの間チャーンしているようです。これと同じ結果を達成するより効率的な方法はありますか?
ご協力をよろしくお願いいたします。ありがとう
ありがとうピーター、これから投稿するときにこのトリックを使用します。
乾杯、
ブレイディ
ブレイディいいですね!
ところで、コードを投稿するときは、JSL を Word ドキュメントにコピー/ペーストし、そこからフォーラムにコピー/ペーストします。これにより、JSL エディターの外観が維持されます。
例えば:
dt <<新しい列( 「y/n 2」 、
式(
含まれています( { 「あ」 、 「B」 、 「C」 、 「D」 、 「え」 、 「ふ」 、 「ぐ」 、 「ああ」 、 「BB」 、 「CC」 、 "グーグー" 、 「ABC」 、 「12月」 、 「WSA」 、
「RSS」 、 「DVC」 、 「SFS」 、 「AAZ」 、 「ザ・ザ」 、 「TT」 } 、 :測定グループ
) != 0
) 、
) ;
JMP初心者さん、こんにちは。
**** これらのスクリプトが意図したとおりであることを確認するには、添付の .jsl ファイルを参照してください。 投稿が正しく表示されないことがあります。以下に表示されるスクリプトをコピー/ペーストまたは入力しても、機能するかどうかはわかりません。 投稿すると間違っているように見えますが、編集すると正常に見えるので、スクリプトファイルを添付する以外に何をすべきかわかりません。 申し訳ありません!
*****
値ラベルを使用する場合 (大きなテーブルの場合、これによりディスク領域も大幅に節約できます)、別のいくつかの迅速なオプションがあります。
1) Contains() 関数を使用した数式ベースのアプローチ:
dt << New Column( "y/n 2",
式(
含まれています(
{"A"、"B"、"C"、"D"、"E"、"F"、"G"、"AA"、"BB"、"CC"、"ZZ"、"ABC"、" DEC"、"WSA"、"RSS"、"DVC"、"SFS"、"AAZ"、"ZZA"、"TTT"}、
:測定グループ
) != 0
)、
<<列プロパティの追加(値ラベル( {0, 1}, {"NO", "YES"} ) )
);
2) 非数式ベースのアプローチ: JMP はテーブルを非常に迅速に処理します。まったく新しいテーブルを作成して閉じる必要があることを考えると、このアプローチの速度には少し驚きました。
dt = 現在のデータ テーブル();
dt2 = 新しいテーブル( "mt", 不可視 );
列( dt2, 1 ) << データ型( 文字 ) << 設定名( "MeasurementGroup" ) << 設定値(
{"A"、"B"、"C"、"D"、"E"、"F"、"G"、"AA"、"BB"、"CC"、"ZZ"、"ABC"、" DEC"、"WSA"、"RSS"、"DVC"、"SFS"、"AAZ"、"ZZA"、"TTT"}
);
dt2 << New Column( "y/n", <<各値を設定( 1 ) );
dt << New Column( "y/n", <<各値を設定( 0 ) );
dt << Update( With( dt2 ), Match Columns( :Measurement Group = :MeasurementGroup ), Update table からの列の追加( None ) );
Column( dt, "y/n" ) << 列プロパティの追加( value label( {0, 1}, {"NO", "YES"} ) );
Close( dt2, nosave );
100 万行のテーブルでは、Match 関数の実行時間は約 2.4 秒でした。 (MS のコンピュータは私のコンピュータよりも速いようです 
上記のアプローチ 1 の実行時間は約 0.8 秒でしたが、アプローチ 2 の実行時間は約 0.4 秒でした。
乾杯、
ブレイディ
ジムさん、素早い対応ありがとうございます! LOC 機能を実装すると、すぐに速度が向上しました。
MS さん、これをさらに改善し、MATCH 関数を教えてくれて (そして速度比較も提供してくれて) ありがとうございます。
Match 機能は複数の選択肢に対して有効です。 100万行で簡単なテストをしましたマッチ、ロックそしてもしそれぞれ 2.1 秒、6.9 秒、10.2 秒で完了します。
dt <<新しい列( 「興味の価値」 、
キャラクター、
公称、
式(
マッチ( :測定グループ、
「あ」 、 "はい" 、
「B」 、 "はい" 、
「C」 、 "はい" 、
「D」 、 "はい" 、
「え」 、 "はい" 、
「ふ」 、 "はい" 、
「ぐ」 、 "はい" 、
「ああ」 、 "はい" 、
「BB」 、 "はい" 、
「CC」 、 "はい" 、
"グーグー" 、 "はい" 、
「ABC」 、 "はい" 、
「12月」 、 "はい" 、
「WSA」 、 "はい" 、
「RSS」 、 "はい" 、
「DVC」 、 "はい" 、
「SFS」 、 "はい" 、
「AAZ」 、 "はい" 、
「ザ・ザ」 、 "はい" 、
「TT」 、 "はい" 、
"いいえ"
)
)
) ;
LOC()関数を使ってみます
if(N Rows(Loc({"A","B","C",................................},MeasurementGroup))>0,"はい","いいえ" )