Skip to content

12.5 FLIP ​

FLIP /VARIABLES=var_list /NEWNAMES=var_name.

FLIP 转置活动数据集中的行和列。它使个案与变量互换,反之亦然。

转置后的活动数据集中的所有变量都是数值型的。字符串变量在转置后的文件中取系统缺失值。

不需要子命令即可运行。如果指定了 VARIABLES 子命令,则选择要转换为个案的变量,未指定的变量将被丢弃。如果省略 VARIABLES 子命令,则选择所有变量进行转置。

由 NEWNAMES 指定的变量(必须是字符串变量)用于为 FLIP 创建的变量命名。仅使用该变量的前 8 个字符。如果未指定 NEWNAMES,则默认使用名为 CASE_LBL 的变量(如果存在)。如果不存在,则 FLIP 创建的变量命名为 VAR000 到 VAR999,然后是 VAR1000、VAR1001,依此类推。

当有可用的 NEWNAMES 变量时,名称必须先规范化才能成为变量名。无效字符在第一位置替换为字母 ‘V’,在后续位置替换为 ‘_’。如果由此生成的名称不唯一,则添加数字扩展,从 1 开始,直到找到唯一名称或没有剩余可能性。如果发生后者,则 FLIP 操作中止。

结果字典包含一个 CASE_LBL 变量,即宽度为 8 的字符串变量,用于存储转置前字典中变量的名称。超过 8 个字符的变量名会被截断。如果再次对此数据集调用 FLIP,可以将 CASE_LBL 变量传递给 NEWNAMES 子命令以重新创建原始变量名。

FLIP 遵循 N OF CASES(见 N OF CASES)。它忽略 TEMPORARY(见 TEMPORARY),因此“临时”转换变为永久。

12.5.1 FLIP 示例 ​

在示例 12.5 中,使用 DATA LIST(见 DATA LIST)输入数据,使得数据集中的第一个变量是包含该个案其他数据描述的字符串变量。显然这种安排不便于执行统计分析,因此如果当初更仔细地考虑数据应如何排列会更好。然而数据通常由第三方来源提供,您无法控制其形式。幸运的是,我们可以使用 FLIP 来交换活动数据集中的变量和个案。

data list notable list /heading (a16) v1 v2 v3 v4 v5 v6 begin data. date-of-birth 1970 1989 2001 1966 1976 1982 sex 1 0 0 1 0 1 score 10 10 9 3 8 9 end data.  echo 'Before FLIP:'. display variables. list.  flip /variables = all /newnames = heading.  echo 'After FLIP:'. display variables. list.

示例 12.5: 使用 FLIP 交换数据集中的变量和个案

如结果 12.3 所示,在 FLIP 命令运行之前有七个变量(六个包含数据,一个用于标题)和三个个案。之后有四个变量(每个个案一个,加上 CASE_LBL 变量)和六个个案。如果不需要,您可以删除 CASE_LBL 变量(见 DELETE VARIABLES)。

名称v1v2v3v4v5v6
名称位置打印格式写入格式
heading1A16A16
v12F8.2F8.2
v23F8.2F8.2
v34F8.2F8.2
v45F8.2F8.2
v56F8.2F8.2
v67F8.2F8.2
date-of-birth1970.001989.002001.001966.001976.001982.00
sex1.00.00.001.00.001.00
score10.0010.009.003.008.009.00
名称位置打印格式写入格式
CASE_LBL1A8A8
date_of_birth2F8.2F8.2
sex3F8.2F8.2
score4F8.2F8.2
CASE_LBLdate_of_birthsexscore
v11970.001.0010.00
v21989.00.0010.00
v32001.00.009.00
v41966.001.003.00
v51976.00.008.00
v61982.001.009.00

结果 12.3: 使用 FLIP 交换数据集中的变量和个案的结果

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