SPSS - 排名和分区
SPSS - Rank and Partition
在 SPSS Statistics 语法文件中,我希望创建一个变量来根据所需的分区列计算排名(例如,相当于 Oracle SQL 开发人员中的 SQL "rank over (partition by column_a order by column b)") .
请看例子:
没有任何过滤器的初始数据:
应用get_rank后的最终输出:
要按照所述创建排名变量,首先对数据进行排序,然后使用 LAG
函数。
SORT CASES BY column_a column_b .
compute rank=1 .
IF ($CASENUM>1 AND column_a=LAG(column_a)) rank=LAG(rank) + 1 .
EXE .
LAG
将查看先前案例的 column_a 的值。在上面的语法中,它检查 column_a 中的值是否与先前情况的值不同。
如果有,则将排名设置为 1。如果没有,则将在前一个案例的排名上加 1。首先确保您的数据已正确排序。
从那里开始,如果您只想查看排名为 1 的记录,您可以使用 FILTER BY
或 SELECT IF
来实现。
如果您确实只需要过滤 key=1
的密钥,那么您可以使用这个:
SORT CASES BY column_a column_b .
match files /file=* /by column_a /first=key1.
现在变量 key1
将在 column_a
类别的每个第一次出现时具有值 1,您可以将它用于 filter
或 select
.
对于完整排名变量,您可以使用这个(甚至不需要先排序):
RANK VARIABLES=b (A) BY a /RANK /TIES=MEAN.
在 SPSS Statistics 语法文件中,我希望创建一个变量来根据所需的分区列计算排名(例如,相当于 Oracle SQL 开发人员中的 SQL "rank over (partition by column_a order by column b)") .
请看例子:
没有任何过滤器的初始数据:
应用get_rank后的最终输出:
要按照所述创建排名变量,首先对数据进行排序,然后使用 LAG
函数。
SORT CASES BY column_a column_b .
compute rank=1 .
IF ($CASENUM>1 AND column_a=LAG(column_a)) rank=LAG(rank) + 1 .
EXE .
LAG
将查看先前案例的 column_a 的值。在上面的语法中,它检查 column_a 中的值是否与先前情况的值不同。
如果有,则将排名设置为 1。如果没有,则将在前一个案例的排名上加 1。首先确保您的数据已正确排序。
从那里开始,如果您只想查看排名为 1 的记录,您可以使用 FILTER BY
或 SELECT IF
来实现。
如果您确实只需要过滤 key=1
的密钥,那么您可以使用这个:
SORT CASES BY column_a column_b .
match files /file=* /by column_a /first=key1.
现在变量 key1
将在 column_a
类别的每个第一次出现时具有值 1,您可以将它用于 filter
或 select
.
对于完整排名变量,您可以使用这个(甚至不需要先排序):
RANK VARIABLES=b (A) BY a /RANK /TIES=MEAN.