2016-06-07 7 views
2

Laut der SPSS Dokumentation-Link unten verstehe ich, dass! REPLACE ist keine gültige Zeichenfolge Manipulation Funktion mit DEFINE -! ENDDEFINE. Sicherlich muss es dafür eine Arbeit geben ... entweder mit anderen Stringmanipulationsfunktionen, oder ich denke eher einen anderen Ansatz. Was haben Sie in der Vergangenheit für diese Art von Problem gesehen? Vielen Dank!SPSS Macro - String Manipulation in DEFINE -! ENDDEFINE

Link zur Dokumentation: https://www.ibm.com/support/knowledgecenter/SSLVMB_21.0.0/com.ibm.spss.statistics.help/syn_define_string_manipulation_functions.htm

Spezifisches Problem:

Benutzer führen die Makro-Variablennamen (VARs), die
    1) müssen von bestimmten Gruppen (groupVars) gemittelt werden,
    2) dann Zscored
    3) und ihre Zscores von den gleichen Gruppen gemittelt.

Wenn ZScored, sind die neuen Variablennamen "Z" + orig var name. Also wollte ich in meiner vars-Liste "" mit "z" ersetzen und setze ein z ganz am Anfang mit! CONC. Problem ist String-Manip-Funktionen scheinen hier nicht zu erlauben! ERSETZEN.

Beispielcode:

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. 

Dies ist die problematische Zeile:! LET Zvars = KONZ (! "Z", REPLACE (Vars, "", "z"))

Antwort

2

denke ich, was Sie brauchen, anstatt Ihre problematische Zeile ist, ist dies:

*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 
+1

ich jetzt sehe, Sie haben durch jede von ihnen wiederum eine Schleife, im wesentlichen, was eine Funktion ersetzen tun sollte. Danke für die Anleitung, das funktioniert. – user3537951