如何在多个spss文件上运行相同的语法

时间:2014-09-30 07:07:38

标签: file-io syntax spss

我在单个文件夹中有.sav格式的24个spss文件。所有这些文件都具有相同的结构。我想在所有这些文件上运行相同的语法。是否可以为此在spss中编写代码?

3 个答案:

答案 0 :(得分:1)

您可以使用SPSSINC PROCESS FILES用户提交的命令执行此操作或编写自己的宏。因此,首先让我们创建一些非常简单的假数据。

*FILE HANDLE save /NAME = "Your Handle Here!".

*Creating some fake data.
DATA LIST FREE / X Y.
BEGIN DATA
1 2
3 4
END DATA.
DATASET NAME Test.
SAVE OUTFILE = "save\X1.sav".
SAVE OUTFILE = "save\X2.sav".
SAVE OUTFILE = "save\X3.sav".
EXECUTE.

*Creating a syntax file to call.
DO IF $casenum = 1.
PRINT OUTFILE = "save\TestProcess_SHOWN.sps" /"FREQ X Y.".
END IF.
EXECUTE.

现在我们可以使用SPSSINC PROCESS FILES命令指定文件夹中的sav文件,并将TestProcess_SHOWN.sps语法应用于每个文件。

*Now example calling the syntax.
SPSSINC PROCESS FILES INPUTDATA="save\X*.sav"  
SYNTAX="save\TestProcess_SHOWN.sps" 
OUTPUTDATADIR="save" CONTINUEONERROR=YES
VIEWERFILE= "save\Results.spv" CLOSEDATA=NO
MACRONAME="!JOB"
/MACRODEFS ITEMS.

答案 1 :(得分:1)

另一种(不太先进)的方法是使用命令INSERT。为此,重复GET每个sav文件,使用INSERT运行语法,并保存文件。可能是这样的:

get 'file1.sav'.
insert file='syntax.sps'.
save outf='file1_v2.sav'.

dataset close all.
get 'file2.sav'.
insert file='syntax.sps'.
save outf='file2_v2.sav'.

etc etc.
祝你好运!

答案 2 :(得分:0)

如果您需要运行的语法完全独立于文件,那么您可以使用:INSERT FILE = 'Syntax.sps'或将代码放在宏中,例如。

Define !Syntax ()
 * Put Syntax here
!EndDefine.

然后您可以“手动”运行其中任何一个;

get file = 'file1.sav'.
insert file='syntax.sps'.
save outfile ='file1_v2.sav'.

或者

get file = 'file1.sav'.
!Syntax.
save outfile ='file1_v2.sav'.

或者如果文件遵循相当严格的命名结构,您可以将上述任何一个嵌入到python的简单位中;

Begin Program.
imports spss
for i in range(0, 24 + 1):
 syntax = "get file = 'file" + str(i) + ".sav.\n"
 syntax += "insert file='syntax.sps'.\n"
 syntax += "save outfile ='file1_v2.sav'.\n"
 print syntax
 spss.Submit(syntax)
End Program.