使用正則表達式重新編碼多個列名稱
大家好!
我正在嘗試將正則表達式替換應用於 JSL 中的重新編碼列函數,以便腳本將遍歷所有列並將正則表達式應用於所有列(如果適用)。
這是我一直在測試的代碼:
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))
);
);我收到此錯誤:
Name Unresolved: LocalTime in access or evaluation of 'LocalTime' , LocalTime/*###*/
LocalTime 是我的數據集中 13 列中的第一列。
我將不勝感激任何幫助!
腳本回复:使用正則表達式重新編碼多個列名稱我剛剛意識到我使用了 Recode Column 而不是重命名列名的函數......
是否有專門的功能來重新編碼列名?還有另一種方法來完成它嗎?
回复:使用正則表達式重新編碼多個列名稱指定的列表不會執行列表中的任何元素。因此,編碼器需要在將列表傳遞給 JMP 之前強制列表完全展開。以下是處理問題的一種方法
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
)
)
);