在 SPSS 中动态命名新的聚合变量

Dynamically name new aggregated variables in SPSS

我有一个大型数据集,我必须使用大量函数(例如最大值、最小值、平均值等)进行聚合。

所有变量都有相似的前缀。我可以使用 spssinc select variables 动态调用它们,然后使用下面的代码进行聚合。

spssinc select variables macroname="!vars_prefix" /properties pattern="prefix*.".

DATASET DECLARE Test.
SORT CASES BY ID_No.
AGGREGATE
  /OUTFILE='Test'
  /PRESORTED
  /BREAK=ID_No
  /!vars_prefix=MEAN(!vars_prefix).

我不确定如何为多个函数执行此操作并将函数名称用作聚合输出中的后缀。我想象像下面这样的东西会起作用(但可惜它没有)。这是可能的还是 SPSS Statistics 的限制?

DATASET DECLARE Test.
SORT CASES BY ID_No.
AGGREGATE
  /OUTFILE='Test'
  /PRESORTED
  /BREAK=ID_No
  /CONCAT(!vars_prefix, '_Mean')=MEAN(!vars_prefix)
  /CONCAT(!vars_prefix, '_Max')=MAX(!vars_prefix).

以下宏循环遍历您创建的变量列表并为每个变量添加一个后缀。要使用宏,您需要在宏调用后的括号中添加后缀。

define !add_suffix (!pos=!enclose("(",")"))
    !do !vr !in (!eval(!vars_prefix)) !concat(!vr, !1) !doend
!enddefine.

定义宏后,您可以在任何需要的地方用新的后缀调用它。例如:

DATASET DECLARE Test.
SORT CASES BY ID_No.
AGGREGATE
  /OUTFILE='Test'
  /PRESORTED
  /BREAK=ID_No
  /!add_suffix (_mean)=MEAN(!vars_prefix)
  /!add_suffix (_max)=max(!vars_prefix)
  /!add_suffix (_min)=min(!vars_prefix).

另一个例子:

dataset activate Test.
do repeat  rng=!add_suffix (_range) / mx=!add_suffix (_max) / mn = !add_suffix (_min)  .
compute rng = mx - mn .
end repeat.
exe.