如何根据另一列中的值计算行数我使用 JMP 12.0 一段时间了,发现它非常棒。 然而,有一个问题,我希望得到一些帮助,因为我似乎是唯一使用 JMP 的人,而其他人则使用 SPSS。
我想获得有关以下方面的一些信息:
C1 C2
标题 计算顺序
r1 外科医生 1
r2外科医生2
r3外科医生3
r4 居民 1
r5 居民 2
r6 实习生 1
r7实习生2
ETC。
我的一个朋友兼同事使用 SPSS,并在该程序中编写了以下公式,用于计算 SPSS 中 C2 的值。
如果标题>LAG(标题),则执行此操作。
计算阶数=1。
万一。
如果 Title=LAG(Title) 则执行此操作。
计算阶数=LAG(阶数)+1。
万一。
执行。
如何在JMP中写出相应的公式?
如果有人能解释如何做,那就太好了。
拉斯·伯杰
回复:如何使 JMP 计算反映参数顺序的值。谢谢您的回答。 我会调查一下。 一位同事帮助我使用了他的统计程序 (SPSS),但我肯定会研究这个,因为我一直在使用 JMP 进行研究。
您忠诚的
拉尔斯
回复:如何使 JMP 计算反映参数顺序的值。如果您使用的是 JMP 13,Col Rank() 函数支持按行号进行平局,因此您可以获得所需的效果。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "Rank within age",
Formula( Col Rank( 1, :age, <<TIE></TIE>
第一个参数是要排名的值,通常是另一列,但在这种情况下,排名值并不重要,因此我使用常量 1。
回复:如何使 JMP 计算反映参数顺序的值。嗨,拉斯!
我认为这是一个脚本,它可以满足您对示例数据中的 Big Class 数据集的要求:
Names Default To Here( 1 );
BC_dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
BCSorted_dt = BC_dt << Sort( By( :age, :sex, :height, :weight ), output table name("Big Class Sorted"));
BCSorted_dt << New Column( "Computed Order",
Numeric,
Ordinal,
Formula( If(row()==1 | :age!=Lag(:age, 1), 1, Lag(:Computed Order, 1)+1) ),
EvalFormula);
如果您需要的只是公式,您可以复制脚本中的 Formula() 参数并将其粘贴到公式编辑器中...只需记住首先对数据进行适当排序即可。
祝你好运!