使用宏重复聚合命令

时间:2019-11-08 04:35:49

标签: spss

我有一个包含parcomm,subcomm,ccs,prov,data列的数据集。我想获得前四列的汇总数据结果。我使用了如下所述的spss代码

DEFINE myvars (arg=TOKENS(4)).
aggregate 
/OUTFILE=* MODE=ADDVARIABLES 
/BREAK=!arg
/sum_!arg=sum(data).
!ENDDEFINE.

myvars parcomm subcomm ccs prov.  

错误显示

  

第2列中的错误#10933。文本:parcomm新的定义   AGGREGATE命令上的变量必须以斜杠终止。   该命令的执行停止。

当我只尝试一个令牌时,出现以下错误:

 DEFINE myvars (arg=!TOKENS(1)). 
 aggregate  /OUTFILE=* MODE=ADDVARIABLES  
 /BREAK=!arg   
 /sum_sum=sum(data). 
 !ENDDEFINE. 
 myvars arg=prov.  
  

第48列中的错误#10934。文本:prov。   AGGREGATE命令指定一个未知的变量名称。   该命令的执行停止。

我应该如何解决该问题?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您想做的就是每次使用不同的break变量运行aggregate,向数据集添加求和聚合。 宏可以帮助循环遍历变量,但是您的宏缺少的是实际的循环。试试这个:

首先只是创建一个小数据集以进行演示:

data list list/parcomm subcomm ccs prov data (5f2).
begin data
1 2 3 4 25
3 2 3 2 33
1 2 3 2 42
4 1 4 1 66
end data.

现在,以下宏将在宏调用中循环遍历变量列表,并对每个变量运行aggregate

DEFINE myvars (arg=!cmdend).
!do !vr !in(!arg)
aggregate 
/OUTFILE=* MODE=ADDVARIABLES 
/BREAK=!vr
/!concat("sum_",!vr) = sum(data).
!doend
!ENDDEFINE.

myvars arg=parcomm subcomm ccs prov.