使用条件公式填充新列我试图根据(:Assign Month)的值用“ A”或“ B”填充新列(:Prog_)。:Assign Month是一个连续的m / d / y数字变量。
下面的脚本导致填充:Prog_列,但不填充我尝试填充:Prog_列的值。
如果:Assign Month <=“ 06/15/2016”,我想用“ A”填充:Prog_列行
如果:Assign Month> 2016/6/15,我想用“ B”填充:Prog_列行。
到目前为止,这是我尝试使用的脚本(未成功):
CT << New Column(“ Prog_”,Character);
对于每一行(Prog_ = if(Char(Format(:Assign Month,“ m / d / y”))<=“ 06/15/2016”,“ A”,“ B”));
CT << New Column(“ Prog_”,Character);
对于每一行(Prog_ = if(:Assign Month <= 06/15/2016,“ A”,“ B”));
脚本编写回复:使用条件公式填充新列你好
首先,确保:Assign Month列的格式设置为数字,连续日期格式;我猜测您在公式中使用引号表示当前情况并非如此。
其次,您无需告诉JMP查看每一行,默认情况下,它会执行此操作。
第三,:Prog_列中的公式应为:
If(:第1列<=日期MDY(16,05,2016),
“一种”,
“ B”
)
值得注意的是,如果这是JSL脚本的一部分,则该函数应包含在New Column语句中(检查Scripting帮助中的确切语法。
最好,
TS回复:使用条件公式填充新列这是我通常处理此类问题的方式。Informat()函数将字符串转换为日期的数字表示形式,然后可以轻松地将其与JMP DateTime值进行比较。
CT = Current Data Table();
CT << New Column( "Prog_", Character );
For Each Row( Prog_ = If( :Assign Month <= Informat( "06/15/2016", "mdy" ), "A", "B" ) );
并添加到@Thierry_S如果创建公式列,则可以避免For Each Row()
CT = Current Data Table();
CT << New Column( "Prog_",
Character,
formula(
If( :Assign Month <= Informat( "06/15/2016", "mdy" ),
"A",
"B"
)
)
);
回复:使用条件公式填充新列您的原始变量是数字,代表JMP日期和时间值。 无需将其转换为格式化的字符串。 您可以直接将时间阈值指定为常数。
CT << New Column( "Prog_", Character );
For Each Row( :Prog_ = If( :Assign Month <= 15Jun2016, "A", "B" ) );