仅保存不为空的数据集

时间:2018-07-18 10:56:13

标签: validation save spss is-empty

我有一个很大的数据集,在其中使用语法进行数据验证。对于每个验证,如果我需要检出数据有问题,则会创建一个变量并将其设置为1。 然后,对于每次验证,我都会创建仅包含相关案例相关变量的数据子集。我仍然使用语法将这些数据文件保存在excel中,以便进行检查并更正数据(在数据库中)。

问题在于,每次运行检查时,并非我的所有50多个验证都检测到任何有问题的数据,但是会保存50多个文件,因为我为每个验证保存了一个文件。我只想保存其中的数据。

当前保存文件的语法为:

DATASET ACTIVATE DataSet1.
DATASET COPY  error1.
DATASET ACTIVATE  error1.
FILTER OFF.
USE ALL.
SELECT IF (var_error1 = 1).
EXECUTE.

SAVE TRANSLATE OUTFILE='path + '_error1.xlsx'
  /TYPE=XLS
  /VERSION=12
  /MAP
  /REPLACE
  /FIELDNAMES
  /CELLS=VALUES
  /KEEP=var1 var2 var3 var4.

对每个验证重复一次。如果没有任何情况违反“ error1”的验证,我仍然会得到一个输出文件(为空)。

有什么方法可以更改语法以仅在确实存在违反验证的情况下才保存数据?

1 个答案:

答案 0 :(得分:0)

以下语法将编写一个新语法,其中包含将文件保存到excel的命令-仅在文件中包含实际情况的情况下。您每次都将运行新语法,但是仅在相关情况下才会创建excel:

DATASET ACTIVATE DataSet1.
DATASET COPY  error1.
DATASET ACTIVATE  error1.
FILTER OFF.
USE ALL.
SELECT IF (var_error1 = 1).
EXECUTE.

do if $casenum=1.
  write outfile='path\tmp\run error1.sps' /"SAVE TRANSLATE OUTFILE='path\var_error1.xlsx'"
     /"  /TYPE=XLS  /VERSION=12  /MAP  /REPLACE  /FIELDNAMES  /CELLS=VALUES  /KEEP=var1 var2 var3 var4.".
end if.
exe.

insert file='path\tmp\run error1.sps'.

请根据需要编辑“路径”。
请注意,在所有情况下都将写入新语法,但是当文件中没有数据时,语法将为空,因此不会将空文件写入excel。