Skip to content

10.1 通用语法 ​

Per input file:
        /FILE={*,’file_name’}
        [/RENAME=(src_names=target_names)…]
        [/IN=var_name]
        [/SORT]

Once per command:
        /BY var_list[({D|A})] [var_list[({D|A}]]…
        [/DROP=var_list]
        [/KEEP=var_list]
        [/FIRST=var_name]
        [/LAST=var_name]
        [/MAP]

本节描述 ADD FILES、MATCH FILES 和 UPDATE 命令共有的语法特性。后续各节描述每个命令特有的细节。

这些命令各自读取两个或多个输入文件并将它们合并。命令的输出成为新的活动数据集。这些命令都不会真正修改输入文件。因此,若要使改动永久生效,必须使用适当的规程或变换显式地保存(参见 系统与便携文件 IO)。

每个命令的语法以对要作为输入的文件的说明开始。对于每个输入文件,使用 FILE 并以字符串形式指定系统文件或便携文件的名称、一个数据集(参见 数据集)或文件句柄名(参见 文件句柄),或使用星号(‘*’)将活动数据集作为输入。FILE 上使用便携文件是 PSPP 的扩展。

必须至少指定两个 FILE 子命令。若将活动数据集用作输入来源,则 TEMPORARY 不能处于生效状态。

每个 FILE 子命令后面可跟任意数量的 RENAME 子命令,它们以括号分组的形式指定输入文件中出现的变量名,后接这些变量的新名称,以等号(=)分隔,例如 /RENAME=(OLD1=NEW1)(OLD2=NEW2)。重命名单个变量时可省略括号:/RENAME=old=new。在括号分组内,变量同时被重命名,因此 /RENAME=(A B=B A) 交换变量 A 和 B 的名称。除此之外,重命名按从左到右的顺序进行。

每个 FILE 子命令后面可选地跟一个 IN 子命令,它创建一个具有指定名称和格式 F1.0 的数值变量。如果该输入文件对某个输出个案有贡献,则 IN 变量在该输出个案中取值 1,否则取值 0。DROP、KEEP 和 RENAME 子命令对 IN 变量没有影响。

如果使用了 BY(见下文),则对于未已按 BY 变量排序的输入文件,必须在 FILE 后指定 SORT 关键字。指定 SORT 时,PSPP 在将输入文件的数据应用于该命令之前,先按 BY 变量对其进行排序。使用 SORT 时,BY 是必需的。SORT 是 PSPP 的扩展。

PSPP 合并所有输入文件的字典,以构成新活动数据集的字典,方式如下:

  • 新活动数据集中的变量是所有输入文件变量的并集,基于变量名进行匹配。当某个输入文件包含具有某给定名称的变量时,输出文件将恰好包含该变量。当多个输入文件包含具有某给定名称的变量时,这些变量必须全部为字符串型或全部为数值型。如果它们是字符串变量,则结果变量将具有该名称下最宽变量的宽度,较窄的值在右侧用空格填充至该宽度。变量是在经 RENAME 子命令重命名之后进行匹配的。因此,可用 RENAME 解决冲突。只有输出文件中的变量才会冲突,因此如下文所述的 DROP 或 KEEP 也可解决冲突。
  • 每个输出变量的变量标签取自第一个指定了该书签的变量标签的输入文件,值标签和缺失值同理。
  • 新活动数据集的文件标签(参见 FILE LABEL)是第一个指定了文件标签的 FILE 的标签。
  • 新活动数据集中的文档(参见 DOCUMENT)是所有输入文件文档的连接,连接顺序与 FILE 子命令的指定顺序一致。
  • 如果所有输入文件都按同一个变量加权,则新活动数据集按该变量加权。否则,新活动数据集不加权。

其余子命令作用于整个输出文件,而非单个输入文件。它们必须位于命令说明的末尾,在所有 FILE 及相关子命令之后指定。其中最重要的是 BY,它指定一组可用于在各输入文件中查找对应个案的一个或多个变量。BY 上指定的变量必须存在于所有输入文件中。此外,如果任何输入文件未按 BY 变量排序,则必须为这些输入文件指定 SORT。

BY 上列出的变量可包含 (A) 或 (D) 注解,以指定升序或降序排序。有关此记法的更多细节,参见 SORT CASES。在 BY 子命令说明中添加 (A) 或 (D) 是 PSPP 的扩展。

DROP 子命令可用于指定要从输出中排除的变量列表。相比之下,KEEP 子命令可用于指定要包含在输出中的变量;所有未列出的变量都被丢弃。DROP 和 KEEP 按从左到右的顺序执行,可重复任意次数。DROP 和 KEEP 不影响由 IN、FIRST 和 LAST 子命令创建的变量,这些变量总是包含在新的活动数据集中,但可用于丢弃 BY 变量。

FIRST 和 LAST 子命令是可选的。它们只能在 MATCH FILES 和 ADD FILES 上指定,且只能在使用 BY 时指定。FIRST 和 LAST 各自向新活动数据集添加一个数值变量,其名称作为子命令的参数给出,并打印与写入格式 F1.0。FIRST 变量在具有给定 BY 变量值集合的第一个输出个案中取值 1,在其他个案中取值 0。类似地,LAST 变量在具有给定 BY 值集合的最后一个个案中取值 1,在其他个案中取值 0。

当这些命令中的任何一个创建输出个案时,仅存在于当前个案所对应输入文件之外的文件中的变量,对数值变量被设为系统缺失值,对字符串变量被设为空格。

这些命令可合并任意数量的文件,仅受机器内存限制。

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