SPSS宏在多个数据文件中运行聚合命令

时间:2013-11-28 23:08:49

标签: macros spss

我想在多个SPSS数据文件上运行以下代码(而不是必须打开每个文件并单独运行代码等)但不确定如何编写适当的宏。非常感谢您的帮助。谢谢!

sort cases by ID(A) TEST_ID(A).


If RESULT='Positive' RESULTS=1.
If RESULT='Negative' RESULTS=0.


AGGREGATE OUTFILE='C:\Desktop\\072013-aggregated.sav'
/PRESORTED
/BREAK=ID
/CLINIC=FIRST(CLINIC)
/SEX=FIRST(SEX)
/DOB=FIRST(DOB).

3 个答案:

答案 0 :(得分:1)

你不能用宏做这种事情,但你可以用SPSSINC PROCESS FILES扩展命令来做。这需要(免费)Python Essentials。较新版本的Statistics在Essentials中包含此命令。如果它不在您的版本中,您可以下载它。该命令包括传统的SPSS语法和对话框界面。

可以通过SPSS社区网站www.ibm.com/developerworks/spssdevcentral获取Python Essentials和各种扩展命令。

答案 1 :(得分:1)

我不同意@JKP。可以用宏来做。

请考虑其他选择。尝试将所有文​​件添加到一个文件中(ADD FILES命令)。使用IN子命令创建文件指示器(请参阅ADD FILES文档)。仅在组合文件上运行一次命令。

答案 2 :(得分:1)

您可以使用以下<宏> SPSS统计信息中的宏轻松迭代文件:

***Defining the path.

DEFINE !Path() 'C:\Documents and Settings\admin\Desktop\' 
!ENDDEFINE.
***You can seperate output paths from input paths and make another macro like above.

DEFINE !agg_loc (!POS=!CMDEND) .
!DO !var !IN (!1)
GET FILE=!quote(!CONCAT(!unquote(!eval(!Path)),!var,".sav")).
DATASET NAME !var.
DATASET ACTIVATE !var.

sort cases by ID(A) TEST_ID(A).
If RESULT='Positive' RESULTS=1.
If RESULT='Negative' RESULTS=0.

AGGREGATE OUTFILE=!quote(!CONCAT(!unquote(!eval(!Path)),!var,"_output_",".sav"))
    /PRESORTED
    /BREAK=ID
    /CLINIC=FIRST(CLINIC)
    /SEX=FIRST(SEX)
    /DOB=FIRST(DOB).

!DOEND.
EXECUTE.
!ENDDEFINE.

***Calling the macro.

!agg_loc dsn_abc.  
!agg_loc dsn_xyz.

**Here dsn_abc,dsn_xyz are file names present at desktop , you can add more file names similarly if there are more files to be read and processed

**The outcome will present at desktop appended with _output_  , e.g dsn_abc_output_.sav is output for first processing and so on.