【问题标题】:SPSS Macro - String Manipulation in DEFINE - !ENDDEFINESPSS 宏 - DEFINE 中的字符串操作 - !ENDDEFINE
【发布时间】:2016-06-07 19:12:59
【问题描述】:

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

文档链接: 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" + orig var name。所以我想在我的 vars 列表中用“z”替换“”,并用 !CONC 将 z 放在开头。问题是这里的字符串操作函数似乎不允许 !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"))

【问题讨论】:

    标签: string replace macros spss


    【解决方案1】:

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

    *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
    

    【讨论】:

    • 我现在明白了,你必须依次循环遍历它们中的每一个,本质上是在做替换函数应该做的事情。感谢您的指导,这行得通。
    猜你喜欢
    • 2017-08-27
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多