使用现有列名创建公式Names Default To Here( 1 );
dt = Current Data Table();
numcol=dt << Get Column Names(Numeric);
charcol=dt << Get Column Names( Character);
For( k = 1, k <= N Items( numcol ), k++,
colname=column(numcol[k]) <<GET name=""></GET>
嗨 JMP 用户,
我有一个数据表,我需要根据预定义的标准对数字列进行一些转换。
我收到错误“在访问或评估‘坏参数’时,表达式不适合第 1 行的可用列类型”。
关于如何解决这个问题的任何想法? 赞赏!
脚本回复:使用现有列名创建公式你有2个问题在这里发生。
- 将公式呈现给新列时,在添加为公式之前不会对其进行处理。因此,当您指定
:Column(dt, colname)
JMP 不会将其更改为第一个数字列名,然后是第二个,依此类推。JSL 作者必须使用将引用扩展为完整/完成的 JSL 语句的代码,然后再将其传递给 Format 元素
- 数据表中的列名(即 1、2、3、4 等)将导致 JMP 解释它们时出现问题,除非您明确指出它们将被解释为列名。因此,您需要使用 :"column name"n 结构
下面是您的代码的修改,可生成您想要的新列
Names Default To Here( 1 );
dt = Current Data Table();
numcol = dt << Get Column Names( Numeric );
charcol = dt << Get Column Names( Character );
For( k = 1, k <= N Items( numcol ), k++,
colname = Column( numcol[k] ) << Get Name;
Eval(
Substitute(
Expr(
dt << New Column( "site" || numcol[k],
formula(
If(
:ID == "item5", (__colname__ * 0.5) / 20,
:ID == "item8", (__colname__ * 0.8) / 20,
__colname__
)
)
)
),
Expr( __colname__ ), Parse( ":\!"" || colname || "\!"n")
)
);
);回复:使用现有列名创建公式谢谢吉姆,它有效!