正規表現を使用して複数の列名を再コーディングします
こんにちは、みんな!
JSLのRecodeColumn関数に正規表現の置換を適用しようとしています。これにより、スクリプトがすべての列を調べ、該当する場合はすべての列に正規表現を適用します。
これは私がテストしてきたコードです:
Names Default To Here(1);
dt = Current Data Table();
//Create list of columns to be recoded
ColN = dt << Get Column Names();
// Iterate over the list of columns and recode each one
For Each({listitem}, ColN,
dt << Recode Column(
As Column(listitem),
{Regex(_rcNow, "erm", "testtest", GLOBALREPLACE)},
Target Column(Column(listitem))
);
);このエラーが発生します:
名前未解決:'LocalTime'、LocalTime / * ###*/のアクセスまたは評価におけるLocalTime
LocalTimeは、私のデータセットの13列のうちの最初の列です。
助けていただければ幸いです!
スクリプティング再:正規表現で複数の列名を再コーディングします列名の名前を変更する関数ではなく、RecodeColumnを使用していることに気づきました...
列名を記録するための専用機能はありますか?それを達成する別の方法はありますか?
再:正規表現で複数の列名を再コーディングしますリストを指定すると、リスト内の要素は実行されません。したがって、コーダーは、リストがJMPに渡される前に、リストを強制的に完全に展開する必要があります。以下は、問題を処理する1つの方法です
Names Default To Here( 1 );
dt = Current Data Table();
//Create list of columns to be recoded
ColN = dt << Get Column Names(string);
// Iterate over the list of columns and recode each one
For Each( {listitem}, ColN,show(listitem);
Eval(
Substitute(
Expr(
dt << Recode Column(
As Column( listitem ),
{Regex( __rcNow__, "erm", "testtest", GLOBALREPLACE )},
Target Column( Column( listitem ) )
)
),
Expr( __rcNow__ ), listitem
)
)
);