使用来自另一列的if条件在JMP中创建新列

时间:2015-04-10 16:12:07

标签: sas-jmp jsl

我在JMP中很新,所以我仍然感觉到。 我想在JMP中创建一个名为“Status”的新列。此状态是字符,取决于“等级”列的值。如果“Grade”列中的条目值为零,则“Status”列中的条目值应为“fail”。如果“等级”值大于100,则“状态”列中的条目应为“无效”。如果:“等级”值小于0,则“状态”值应为“无效”。这应该很简单。但不知何故,我的脚本将不起作用:

dt = Current Data Table();
dt << New Column("Status", Character, Formula(
    If(:Name( "Grade" )==0, "fail",
       :Name( "Grade" )>100, "invalid",
       :Name( "Grade" )<0, "invalid")
));

你能帮我调试这个脚本吗?

1 个答案:

答案 0 :(得分:3)

我刚刚尝试了脚本,公式对我有用。

这是一些更完整的JSL,它还添加了“Status”所依赖的“Grade”列。

dt = Current Data Table();
dt << New Column( "Grade",
        Numeric,
        "Continuous",
        Format( "Best", 12 ),
    );
dt << New Column( "Status",
        Character,
        "Nominal",
        Formula(
            If(
                :Grade == 0, "fail",
                :Grade > 100, "invalid",
                :Grade < 0, "invalid"
            )
        )
    );

也许问题是您还没有使用成绩列打开数据表?这是一个用公式和一些值创建一个全新表格的脚本。

New Table( "Grading Test",
    Add Rows( 7 ),
    New Column( "Grade",
        Numeric,
        "Continuous",
        Format( "Best", 12 ),
        Set Selected,
        Set Values( [45, 20, 100, 101, -4, 0, 120] )
    ),
    New Column( "Status",
        Character,
        "Nominal",
        Formula(
            If(
                :Grade == 0, "fail",
                :Grade > 100, "invalid",
                :Grade < 0, "invalid"
            )
        )
    )
);

我通过交互式创建表并使用红色三角形菜单并选择“复制表脚本”来创建它。

我试过JMP 12.0,你使用哪个版本?