我是SPSS宏的新手。我打算自动化CTables生产。在ctables中,除了变量外,其他所有内容都相同。

我的命令是:

   CTABLES
   /VLABELS VARIABLES=usevar anzahl gesamt F0passthrough DISPLAY=LABEL
   /TABLE usevar [C][COLPCT.VALIDN '' PCT40.1] + anzahl [C][COUNT '' F40.0] BY gesamt + F0passthrough
   /SLABELS POSITION=ROW
   /CATEGORIES VARIABLES=usevar anzahl ORDER=A KEY=VALUE EMPTY=INCLUDE
   /CATEGORIES VARIABLES=gesamt F0passthrough ORDER=A KEY=VALUE EMPTY=EXCLUDE.
   filter off.

usevar是我旨在与宏交换的变量。 (例如,我的变量是F5 F6 F7)

所以我尝试了:
DEFINE !usevar()
F1 F5
!ENDDEFINE.

   CTABLES
   /VLABELS VARIABLES=usevar anzahl gesamt F0passthrough DISPLAY=LABEL
   /TABLE usevar [C][COLPCT.VALIDN '' PCT40.1] + anzahl [C][COUNT '' F40.0] BY gesamt + F0passthrough
   /SLABELS POSITION=ROW
   /CATEGORIES VARIABLES=usevar anzahl ORDER=A KEY=VALUE EMPTY=INCLUDE
   /CATEGORIES VARIABLES=gesamt F0passthrough ORDER=A KEY=VALUE EMPTY=EXCLUDE.
   filter off.

非常感谢您的帮助-没有提供示例数据。只需向正确的方向提示即可。

最佳答案

首先,如果您使用“!usevar”名称定义宏,则必须在语法中使用相同的名称-“usevar”将不起作用。

无论如何,我建议对宏使用另一种方法:

define !MyCtabMacro (!pos=!cmdend)
   CTABLES
   /VLABELS VARIABLES=!1 anzahl gesamt F0passthrough DISPLAY=LABEL
   /TABLE !1 [C][COLPCT.VALIDN '' PCT40.1] + anzahl [C][COUNT '' F40.0] BY gesamt + F0passthrough
   /SLABELS POSITION=ROW
   /CATEGORIES VARIABLES=!1 anzahl ORDER=A KEY=VALUE EMPTY=INCLUDE
   /CATEGORIES VARIABLES=gesamt F0passthrough ORDER=A KEY=VALUE EMPTY=EXCLUDE.
   filter off.
!enddefine.

现在,您可以调用宏为每个变量创建一个表,例如:
!MyCtabMacro F5.
!MyCtabMacro F6.

如果要对许多变量执行此操作,则可以让宏在它们之间循环:
define !MyCtabMacro (!pos=!cmdend)
!do !onevar !in(!1)
   CTABLES
   /VLABELS VARIABLES=!onevar anzahl gesamt F0passthrough DISPLAY=LABEL
   /TABLE !onevar [C][COLPCT.VALIDN '' PCT40.1] + anzahl [C][COUNT '' F40.0] BY gesamt + F0passthrough
   /SLABELS POSITION=ROW
   /CATEGORIES VARIABLES=!onevar anzahl ORDER=A KEY=VALUE EMPTY=INCLUDE
   /CATEGORIES VARIABLES=gesamt F0passthrough ORDER=A KEY=VALUE EMPTY=EXCLUDE.
   filter off.
!doend
!enddefine.

现在调用宏:
!MyCtabMacro F5 F6 F7 F8 F9.

注意:对于宏循环,您不能使用“F5 to F9”,您必须像我的示例一样单独列出所有变量。

关于macros - 通过宏的SPSS CTables,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41698640/

10-12 23:27