问题描述
我们有一个很大的 SPSS 文件,它有 5MB,有大约 1400 个变量。我们正在将所有内容迁移到数据库,为了配置表格和表单等,我们需要 SPSS 文件中的元数据,但采用特定的自定义格式。
所以如果变量视图是这样的:
+--------+------------------+---------+-------+----------+----------------+
| Name | Label | Type | Width | Decimals | Values |
+--------+------------------+---------+-------+----------+----------------+
| PATID | Patient Id | Numeric | 8 | 0 | |
| dob | Date Of Birth | Date | 11 | 0 | |
| SEX | Sex | String | 1 | 0 | {F,Female}... |
| ICFORM | Informed consent | Numeric | 8 | 0 | {0,No}... |
+--------+------------------+---------+-------+----------+----------------+
FieldName;Description;DataType;Width;Decimals;Choices
PATID;"Patient Id";Int;8;0;""
dob;"Date Of Birth";Datetime;11;0;""
SEX;"Sex";radio;1;0;"F = Female,M = Male"
ICFORM;"Informed consent";radio;8;0;"0 = No,1 = Yes"
我们还有几个 SPSS 文件,所以最好我想尽可能使用 SPSS 语法来完成。在 this answer 中,有人建议使用 OMS
来捕获 dictionary
,但我不知道它是如何工作的。当我尝试这个时:
disPLAY dictionary.
OMS dictionary.
子命令 OMS。未知关键字或子命令:字典。
该命令的执行停止。
解决方法
OMS
确实是您所需要的,但整个过程将如下所示:
DATASET DECLARE vars.
OMS /SELECT TABLES
/IF COMMANDS=['File Information'] SUBTYPES=['Variable Information']
/DESTINATION FORMAT=SAV NUMBERED=TableNumber_ OUTFILE='vars' .
DATASET DECLARE vals.
OMS /SELECT TABLES
/IF COMMANDS=['File Information'] SUBTYPES=['Variable Values']
/DESTINATION FORMAT=SAV NUMBERED=TableNumber_ OUTFILE='vals' .
display dictionary.
omsend.
您现在将拥有两个包含所有变量的变量定义和值标签的新数据集。
,在任何情况下,您都不需要将元数据导出到新文件中。您还可以从 SPSS 数据文件中导入元数据。这样做的命令是:
APPLY DICTIONARY FROM datafilename.sav
/SOURCE VARIABLES = varlist
/TARGET VARIABLES = varlist
/NEWVARS .
您可以在
中找到有关此的完整信息IBM SPSS Statistics 26 命令语法参考,第 15 章 - APPLY DICTIONARY,p。 167ff
HTH。
最好的问候
乔治