如何在表达式中引用具有复杂名称的列初级 JSL 脚本编写者在这里...
我想创建一个脚本来删除任何列中缺少数据的任何行。现在,如果我重命名列,它将像这样工作:
clean_dt << selectWhere(IsMissing ( :THK ) ) << 删除行;
问题是,我希望这个脚本是动态的,并且能够处理我给它的任何列的任何名称,并例如通过列号引用它。 假设列名像这样复杂
步骤::测量::数据::THK:原始(平均值)
我不想每次都重命名我的专栏...... 我已经尝试了几次我认为“应该”有效的事情的迭代,但它们没有,例如
clean_dt << selectWhere(IsMissing(专栏(8) )) << 删除行;
或者
clean_dt << selectWhere(IsMissing(:步骤::数据::THK:原始(平均值) )) << 删除行; (列名过于复杂且含有特殊字符)
每次都会出现此消息错误
在访问或评估 'Is Missing' 、Is Missing/*###*/(Column( 8 )) 时,参数应为数字{1}
回复:如何在表达式中引用具有复杂名称的列谢谢,这有效! 从这里开始,应该很容易使用 i 作为列索引在循环中传递表达式回复:如何在表达式中引用具有复杂名称的列使用“选择位置”消息时,条件需要基于当前行,因为 JMP 将查看每一行以查看该行是否满足条件。
由于 Column 函数实际上返回对整个列的引用,因此当您在 SelectWhere 消息中使用 Column 函数时,需要包含当前行的下标。 这可以通过添加下标 [Row()] 或简称为 [] 来完成。 见下文。
dt << Select where( Is Missing( Column( 8 )[] ) );
当您想要使用带有特殊字符的列名时,可以使用带有列名字符串的名称解析器。 如果该字符串需要是变量,则需要使用 Column 函数。
dt << Select Where( Is Missing( :Name( "Step::Data::THK:Raw (Mean)" ) ) );
或者
str = "Step::Data::THK:Raw (Mean)";
dt << Select Where( Is Missing( Column( str )[] ) );