首页 > 解决方案 > 使用宏重复聚合命令

问题描述

我有一个包含 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 命令指定一个未知的现有变量名。该命令的执行停止。

我应该如何解决这个问题?

标签: spss

解决方案


如果我理解正确,您要做的是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. 

推荐阅读