「パターン」で列を選択するこんにちは
これは簡単な作業ですが、すぐに実行する方法を見つけることができませんでした。
多くの列 (約 5000) を持つテーブルがあり、列のサブセットを選択して、サブセット テーブルを抽出する必要があります。
最も愚かな方法は、列セレクターから各列を選択することです。
実際、列名に「パターン」を適用することで、必要な列を簡単に識別できました。
たとえば、列が次のようになるとします。
AAA11
AAA12
ABB22
XXX99
CAB32
CAB99
名前に「B」が含まれ、「2」で終わる列を選択する必要があります
これらは、「*B*2」などのパターンで識別できます。ここで、「*」はワイルドカードです。
この例では、パターンは「ABB22」と「CAB32」を選択します。
これを行う簡単な方法は見つかりませんでした。
前もって感謝します
エマニュエル
データのブレンドとクリーンアップRe: 「パターン」で列を選択する本当に正規表現が必要で、FilterEach を含む最新バージョンの JMP をお持ちの場合は、次の手順に従ってください。
dt = Open( "$sample_data/big class.jmp" );
colList = dt << get column names( string );
// (>?.*?) is an atomic match for a reluctant (not greedy) match of 0 or more characters
// atomic is important when the match might fail to keep if from slowing down a lot on long names
Filter Each( {name}, colList, !Is Missing( Regex( name, "^((.e.)|((>?.*?)a(>?.*?)e.*))$" ) ) );
{"名前", "年齢", "性別"}
正規表現は、いつものように、読むよりも書く方が楽しいです。 1 つの正規表現に複数の .* が含まれていると一致できない可能性があるので注意してください。無益な代替案が多数試される可能性があります。
Re: 「パターン」で列を選択する条件を満たす列のリストを作成するための簡単なスクリプトは次のとおりです。
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( string );
For( i = N Items( colList ), i >= 1, i--,
If( !(Contains( colList[i], "B" ) & Right( colList[i], 1 ) == "2"),
Remove From( colList, i, 1 )
)
);