我想在多个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).
答案 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.