使用正则表达式重新编码多个列名称
大家好!
我正在尝试将正则表达式替换应用于 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
)
)
);