SPSS 宏 - DEFINE 中的字符串操作 - !ENDDEFINE

SPSS Macro - String Manipulation in DEFINE - !ENDDEFINE

根据下面的 SPSS 文档-link,我了解到 !REPLACE 不是带有 DEFINE - !ENDDEFINE 的有效字符串操作函数。当然必须有解决这个问题的方法......或者使用其他字符串操作函数,或者我认为更有可能是另一种方法。对于这种问题,你们过去见过什么?谢谢!

Link 到文档: https://www.ibm.com/support/knowledgecenter/SSLVMB_21.0.0/com.ibm.spss.statistics.help/syn_define_string_manipulation_functions.htm

具体问题:

用户输入
的宏变量名称 (vars) 1)需要按指定组(groupVars)取平均值,
2) 然后 Zscored
3) 和他们的 Zscores 由同一组平均。

Zscored时,新的变量名是"Z"+原变量名。所以我想在我的 vars 列表中将“”替换为“z”,并将 z 放在最开始的地方!CONC。问题是这里的字符串操作函数似乎不允许 !REPLACE.

示例代码:

 DEFINE !RunProfiles (vars=!CHAREND ('/') /groupVars =!CMDEND) 

*GET MEANS FOR EACH GROUPVAR FOR SPECIFIED VARIABLES.
!DO !I !IN (!groupVars)
    means tables=!vars by !I / cells mean.
!DOEND

*GET ZSCORES FOR SPECIFIED VARS.
DESCRIPTIVES VARIABLES=!profvars
  /SAVE
  /STATISTICS=MEAN.

*GET Z MEANS FOR EACH SEGMENT FOR SPECIFIED VARIABLES.
!DO !I !IN (!groupVars)
    !LET Zvars = !CONC("z", !REPLACE(!vars, " ", " z"))
   means tables=!Zvars by !I / cells mean.
!DOEND

!ENDDEFINE.

这是有问题的行:!LET Zvars = !CONC("z", !REPLACE(!vars, " ", " z"))

我认为你需要的是这个有问题的行:

*GET Z MEANS FOR EACH SEGMENT FOR SPECIFIED VARIABLES.
!DO !I !IN (!groupVars)
    means tables=!do !k !in(!vars) !concat("Z",!k) !doend by !I / cells mean.
!DOEND