SPSS 对多个文件重复一个任务

SPSS repeat a task on many files

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

最终,我将在 ABC 中保存 100 个单独的文件 - 天(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='Testing\ABC - 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='Testing\ABC - 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='Testing\ABC - 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='Testing\ABC - 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 .