SPSS在多个文件上重复一个任务



我想实现以下目标:
对于每100个数据集(保存在。sav中),1)2) 添加一个名为"Day"的变量,并用数字填充它。所以file1在'Day'下有1,file2在'Day'下有2,依此类推(见下图1)。3)选择Status = 0的行。和4)保存格式为ABC - Day xx - Female.sav图1

最终,我将有100个单独的文件保存在ABC - Day(1到100)- Female.sav.

到目前为止,我一直在做他们一个接一个,但我想知道是否有一种方法来自动化这个过程?下面是我到目前为止的代码:

***DAY 1***.
***open file***.
GET 
FILE='ABC - Day 1 - Female_May 6, 2022_09.24.sav'. 
DATASET NAME DataSet1 WINDOW=FRONT.
***Drop a row of data***.
SELECT IF (Status=0).
***Add Day***.
COMPUTE DAY = 1.
EXECUTE.
***save file***.
SAVE OUTFILE='TestingABC - Day 1 - Female.sav'
/COMPRESSED.
***DAY 2***.
***open file***.
GET 
FILE='ABC - Day 2- Female_May 6, 2022_09.24.sav'. 
DATASET NAME DataSet1 WINDOW=FRONT.
***Drop a row of data***.
SELECT IF (Status=0).
***Add Day***.
COMPUTE DAY = 2.
EXECUTE.
***save file***.
SAVE OUTFILE='TestingABC - Day 2 - Female.sav'
/COMPRESSED.
***DAY 3***.
***open file***.
GET 
FILE='ABC - Day 3- Female_May 6, 2022_09.24.sav'. 
DATASET NAME DataSet1 WINDOW=FRONT.
***Drop a row of data***.
SELECT IF (Status=0).
***Add Day***.
COMPUTE DAY = 3.
EXECUTE.
***save file***.
SAVE OUTFILE='TestingABC - Day 3 - Female.sav'
/COMPRESSED.

我读过这样的重复命令,你可以写一个宏,但我找不到好的资源?如果有人有任何建议或指点,我将不胜感激。

下面的宏将完成您需要的工作—它遍历!day参数并执行您描述的序列。

注意-宏中跳过的行是必要的-不要删除。

define !dofiles ()
!do !day=1 !to 100
***open file***.
!concat("GET  FILE='ABC - Day ", !day, " - Female_May 6, 2022_09.24.sav'. ") 
***Drop a row of data***.
SELECT IF (Status=0).
***Add Day***.
COMPUTE DAY = !day .
***save file***.
!concat("SAVE OUTFILE='TestingABC - Day ", !day , " - Female.sav'   /COMPRESSED. ")
dataset close all.
!doend
!enddefine.
* Now that the macro is defined you can call it using it's name.
!dofiles .

最新更新