我有以下spss语法:
DO IF SYSMIS(V5).
 COMPUTE V5 = LAG(V5).
END IF.
EXE.效果很好。但是,我想对几个变量重复相同的过程。我试图编写一个宏来实现这一点,但是我一直收到错误消息。这是我的尝试:
define filldown (!positional !cmdend).
  do if sysmis(!1).
   compute !1 = lag (!1).
  end if.
  execute.
!enddefine.
!filldown V5 age wt htm.如何编写能够工作的宏(我是宏新手)?
发布于 2017-09-30 20:48:52
宏只是一个文本替换函数。它实际上将用调用宏( !1 )时提供的任何参数替换您的V5 age wt htm。
为了保持简单,我建议使用一个简单的do repeat命令,而不是宏,如果您不熟悉宏,使用它们可能会有点不舒服。
do repeat varlist=V5 age wt htm.
if sysmis(varlist) varlist=lag(varlist).
end repeat.
exe.P.S.:如果你真的想要使用宏,你需要对每个变量分别调用它。
https://stackoverflow.com/questions/46506603
复制相似问题