SPSS宏 - 生成动态Varnames

时间:2016-03-17 15:10:24

标签: macros spss

我目前正在尝试根据传递的Argument的valuelabels创建动态变量名。目前,我有这样的事情:

COMPUTE counter = 0.

APPLY DICTIONARY FROM *
  /SOURCE VARIABLES = V601
  /TARGET VARIABLES = counter.

DEFINE  !macro1 (!POS !CMDEND).
STRING name (A20).
!DO !#i = 1 !TO 62
  COMPUTE counter = #i
  !IF (!POS !EQ !i)
    !THEN
      COMPUTE name = VALUELABEL(!POS)
      COMPUTE !CONCAT('wasnot', name) = 1.
    !ELSE
      COMPUTE name = VALUELABEL(!counter).
      COMPUTE !CONCAT('wasnot', name) = 0.
  !IFEND
!DOEND

CROSSTABS v15 by !CONCAT('wasnot', name) /cells = column.

!ENDDEFINE.

这个想法是,对于V601的每个唯一值,将创建一个标志变量(例如" wasnotvaluelabel1")。此变量将分别具有值= 1或0。但是,似乎concat不能按照我的意图使用。我收到这些错误:

  •   

    第7列中的错误#6843。文本:!POS   在期望操作数时发生宏表达式的结束。   执行此命令停止。

  •   

    第7列中的错误#6846。文字:!POS   宏表达式包括未定义的宏变量或宏运算符   这在表达式中无效。

  •   

    第12栏中的错误#6836。文字:!EQ   在宏表达式中,运算符前面没有操作数。

  •   

    第2列中的错误#6846。文字:!那么   宏表达式包括未定义的宏变量或宏运算符   这在表达式中无效。

  •   

    第28列中的错误#6846。文字:!POS   宏表达式包括未定义的宏变量或宏运算符   这在表达式中无效。

我现在的问题:

  1. 甚至可以生成动态名称吗?我试过了 过去几小时的不同尝试,但SPSS宏"语言" 似乎非常有限。
  2. 是否有其他方法可以实现此任务?这似乎很不方便。
  3. 请注意,使用Python AddIn遗憾的是不是选项。我很感激任何收到的建议。

2 个答案:

答案 0 :(得分:1)

有一个扩展命令SPSSINC CREATE DUMMIES,它将自动创建所有这些虚拟变量。它位于“变换”菜单上。它是用Python实现的。

使用Python,您可以轻松阅读案例数据并做更多事情。

答案 1 :(得分:0)

感谢所有帮助。最后,我使用Outfile生成新语法。