Skip to content

12.8 SORT CASES ​

SORT CASES BY var_list[({D|A}] [ var_list[({D|A}] ] ...

SORT CASES 按一个或多个变量的值对活动数据集排序。

指定 BY 和要排序的变量列表。默认情况下,变量按升序排序。要覆盖排序顺序,可在变量列表之后指定 (D) 或 (DOWN) 得到降序,或指定 (A) 或 (UP) 得到升序。这些顺序对前面所列的所有变量生效,直到出现前一个 (A)、(D)、(UP) 或 (DOWN)。

SORT CASES 使用的排序算法是稳定的。这意味着排序变量取值相同的记录,在排序前后保持相同的相对顺序。因此,对已排序的文件重新排序不会影响个案的顺序。

SORT CASES 是一个过程。它会导致数据被读取。

SORT CASES 尝试在内存中对整个活动数据集排序。如果工作区耗尽,它会回退到一种归并排序算法,该算法会创建大量临时文件。

SORT CASES 不能出现在 TEMPORARY 之后。

12.8.1 排序示例 ​

在示例 12.6 中,文件 physiology.sav 的数据按两个变量排序,即 sex 降序、temperature 升序。

get file='physiology.sav'. sort cases by sex (D) temperature(A). list.

示例 12.6: 按两个变量对个案排序

在结果 12.4 中可以看到,所有 sex 为 ‘1’(女性)的个案都出现在 sex 为 ‘0’(男性)的个案之前。这是因为它们按降序排序。在每种性别内部,数据按 temperature 变量排序,这次是升序。

sexheightweighttemperature
1160656.134.56
117956.335.15
1160955.435.46
1160656.036.06
1160756.336.26
1160456.036.57
1160456.636.81
1160656.336.88
1160457.837.32
1159855.637.37
1160755.937.84
1160554.537.86
1160356.138.80
1160458.138.85
1160557.738.98
1170955.639.45
11604-55.639.72
1160155.939.90
0179990.332.59
0179989.033.61
0179990.634.04
0180190.534.42
0180287.735.03
0179390.135.11
0180192.135.98
0180089.536.10
0164592.136.68
0169890.236.94
0180089.637.02
0180088.937.03
0180188.937.12
0179990.437.33
0190391.537.52
0179990.937.53
0180091.037.60
0179990.437.68
0180191.738.98
0180190.939.03
0179989.339.77
0188488.639.97

结果 12.4: 排序后的 physiology.sav 文件

请注意,SORT CASES 与所有其他转换一样,只影响活动文件。它对 physiology.sav 文件本身没有任何影响。要做到这一点,你必须使用 SAVE 命令重写该文件(参见 SAVE)。

使用图形用户界面时,直接从数据视图执行排序通常更简单。为此,切换到数据视图。选择要按其排序的变量对应的列,单击按钮 1,然后单击按钮 3。将出现一个弹出菜单,如截图 12.5 所示。从该菜单中选择“升序排序”或“降序排序”。

截图 12.5: 按单个变量 height 排序数据

不过,有时你会想按两个或更多变量排序,而用这种方法做不到。此时,你必须使用一些代码,或使用“数据”菜单中的“排序个案”对话框。截图 12.6 显示了设置为按 sex 和 height 两个变量执行排序的对话框。注意输入变量的顺序很重要。本例中,数据会先按 sex 排序,然后对所有 sex 相同的个案再按 height 排序。

截图 12.6: 按两个变量 sex 和 height 排序数据

基于 GNU PSPP 2.0.1 手册与入门教程整理