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 变量排序,这次是升序。
| sex | height | weight | temperature |
|---|---|---|---|
| 1 | 1606 | 56.1 | 34.56 |
| 1 | 179 | 56.3 | 35.15 |
| 1 | 1609 | 55.4 | 35.46 |
| 1 | 1606 | 56.0 | 36.06 |
| 1 | 1607 | 56.3 | 36.26 |
| 1 | 1604 | 56.0 | 36.57 |
| 1 | 1604 | 56.6 | 36.81 |
| 1 | 1606 | 56.3 | 36.88 |
| 1 | 1604 | 57.8 | 37.32 |
| 1 | 1598 | 55.6 | 37.37 |
| 1 | 1607 | 55.9 | 37.84 |
| 1 | 1605 | 54.5 | 37.86 |
| 1 | 1603 | 56.1 | 38.80 |
| 1 | 1604 | 58.1 | 38.85 |
| 1 | 1605 | 57.7 | 38.98 |
| 1 | 1709 | 55.6 | 39.45 |
| 1 | 1604 | -55.6 | 39.72 |
| 1 | 1601 | 55.9 | 39.90 |
| 0 | 1799 | 90.3 | 32.59 |
| 0 | 1799 | 89.0 | 33.61 |
| 0 | 1799 | 90.6 | 34.04 |
| 0 | 1801 | 90.5 | 34.42 |
| 0 | 1802 | 87.7 | 35.03 |
| 0 | 1793 | 90.1 | 35.11 |
| 0 | 1801 | 92.1 | 35.98 |
| 0 | 1800 | 89.5 | 36.10 |
| 0 | 1645 | 92.1 | 36.68 |
| 0 | 1698 | 90.2 | 36.94 |
| 0 | 1800 | 89.6 | 37.02 |
| 0 | 1800 | 88.9 | 37.03 |
| 0 | 1801 | 88.9 | 37.12 |
| 0 | 1799 | 90.4 | 37.33 |
| 0 | 1903 | 91.5 | 37.52 |
| 0 | 1799 | 90.9 | 37.53 |
| 0 | 1800 | 91.0 | 37.60 |
| 0 | 1799 | 90.4 | 37.68 |
| 0 | 1801 | 91.7 | 38.98 |
| 0 | 1801 | 90.9 | 39.03 |
| 0 | 1799 | 89.3 | 39.77 |
| 0 | 1884 | 88.6 | 39.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 排序数据