我有一个包含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命令指定一个未知的变量名称。 该命令的执行停止。
我应该如何解决该问题?
答案 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.