首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于2个现有变量创建新变量的SPSS宏

基于2个现有变量创建新变量的SPSS宏
EN

Stack Overflow用户
提问于 2015-03-06 21:36:17
回答 1查看 1K关注 0票数 0

我试图编写一个宏来执行以下操作:

代码语言:javascript
复制
do if SYSMIS(V2).
compute V3=V1.
ELSE.  
compute V3=V2.
end if.

我尝试了几种方法,但它总是停留在计算命令上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-10 00:57:44

重要的是,你应该知道SPSS宏是,SPSS宏语言只是一个“字符串解析器”。这意味着将解析DEFINE !ENDDEFINE块中的文本,并作为输出创建语法代码。变量(以“!”开头)将被分配给这些变量的字符串(值)替换。

因此,行COMPUTE !var1 = !var2.将生成一个计算命令,并将变量名分配给!var1和!var2。

另一方面,像!IF (SYSMIS(!Var2)) !Var1 = !Var3.这样的命令没有意义,因为您实际上想要的是执行一个IF命令,而!IF是一个条件宏指令,它‘决定’某个语法代码是否由宏生成(如果满足条件),或者没有。

所以你的解决方案应该是这样的:

代码语言:javascript
复制
DEFINE !crevar ( !POSITIONAL !TOKENS(1)
                 /!POSITIONAL !TOKENS(1)
                 /!POSITIONAL !TOKENS(1))
   DO IF SYSMIS(!2).
      compute !3=!1.
   ELSE.  
      compute !3=!2.
   END IF.
!ENDDEFINE.

* Macro call.
!crevar V1 V2 V3.

EXECUTE.

上面的宏调用将由宏解析器对您在问题中给出的代码进行评估。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28908083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档