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

File io 如何在多个spss文件上运行相同的语法,file-io,syntax,spss,File Io,Syntax,Spss,我在一个文件夹中有24个.sav格式的spss文件。所有这些文件都具有相同的结构。我想在所有这些文件上运行相同的语法。是否可以在spss中为此编写代码?您可以使用SPSSINC过程文件用户提交的命令来执行此操作或编写自己的宏。首先让我们创建一些非常简单的假数据来处理 *FILE HANDLE save /NAME = "Your Handle Here!". *Creating some fake data. DATA LIST FREE / X Y. BEGIN DATA 1 2 3 4 E

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

您可以使用
SPSSINC过程文件
用户提交的命令来执行此操作或编写自己的宏。首先让我们创建一些非常简单的假数据来处理

*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\u show.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.
另一种(不太高级)方法是使用命令
INSERT
。为此,重复
GET
每个sav文件,使用
INSERT
运行语法,然后sav文件。可能是这样的:

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.

祝你好运

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

Define !Syntax ()
 * Put Syntax here
!EndDefine.
然后您可以“手动”运行其中一个

get file = 'file1.sav'.
insert file='syntax.sps'.
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.

你好SPSSINC似乎是一个扩展包。我已经加载了它,并试图安装它。。但是我遇到了一个错误,无法在路径文件中安装扩展包。@user2717955-对此我无能为力。我唯一的猜测是,在安装扩展时,您需要以管理员身份登录。您好!我能够安装插件。但是,我还需要一个命令行将excel工作簿中的24张excel工作表(编号为1-24)作为名为1.sav、2.sav…24.sav的单独数据集文件导入spss。这些文件中的每一个都具有相似的格式,只是要导入的行数在不同的文件中有所不同。然后,需要对所有文件进行类似的重新编码。你能帮我解决这个问题吗?+1-你可以把它封装在一个宏中,使重复调用相同命令变得更简单,特别是如果文件名列表是一个像你所展示的方便计数器的话。
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.