我目前正在尝试根据传递的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 宏表达式包括未定义的宏变量或宏运算符 这在表达式中无效。
我现在的问题:
请注意,使用Python AddIn遗憾的是不是选项。我很感激任何收到的建议。
答案 0 :(得分:1)
有一个扩展命令SPSSINC CREATE DUMMIES,它将自动创建所有这些虚拟变量。它位于“变换”菜单上。它是用Python实现的。
使用Python,您可以轻松阅读案例数据并做更多事情。
答案 1 :(得分:0)
感谢所有帮助。最后,我使用Outfile生成新语法。