2016-05-11 139 views
1

我希望能夠遍歷SPSS一系列類似的命名變量的循環,只是改變了幾個參數。例如,我有變量通過動態變量名

q7_22_react_a q7_22_react_b q7_22_react_c q7_2 _react_a q7_2 _react_b q7_2 _react_c

通知的編號和字母的變化。我試過這個,但是它不能很好地解析「7_22」:

define !test (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat(q,!i,'_react_',!letters) 
!doend 
!enddefine. 

!test numbers= 7_22/letters= a. 

想法?

+0

尼斯一個上會出現一個對話框!之前沒有遇到這個問題......我檢查了更多,發現令牌如果以數字或下劃線開頭就會分裂。 –

回答

1

我不知道是否有一個真正的解決辦法,但我能想到的幾個解決方法的。這個想法是防止令牌從越來越分裂 - 無論是用字母開頭的:

define !test2 (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat(!i,'_react_',!letters) 
!doend 
!enddefine. 

!test2 numbers= q7_22/letters= a. 

或通過添加引號:

define !test3 (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat('q',!unquote(!i),'_react_',!letters) 
!doend 
!enddefine. 

!test3 numbers= '7_22'/letters= a. 
+0

謝謝。我試着用類似的命名規則解決了問題並取得了成功。 我偶然發現了一箇舊的IBM線程,它看起來像宏列表中有下劃線時,SPSS會將它作爲不同的變量分開。真正的痛苦,但可以解決。 – vashts85

1

這裏有一個簡單的解決方案。

SPSSINC SELECT VARIABLES MACRONAME =「!react」 /PROPERTIES PATTERN =「。* react」。

頻率!反應。

的圖案是一個正則表達式 - 在這裏,其中包括「反應」的任何名稱。 SPSSINC SELECT VARIABLES是一種擴展命令,通常與最新版本的統計信息一起安裝,或可從SPSS社區站點獲取。它有一個實用程序菜單

1
define !test (numbers= !chardend('/')/letters= !cmdend). 
    !do !i !in (!numbers) 
     frequencies variables !concat(q,!UNQUOTE(!i),'_react_',!letters). 
    !doend 
!enddefine. 
SET MPRINT ON. 
!test numbers= '7_22'/letters= a. 

Resulting Syntax ;-))) 
frequencies variables q7_22_react_a.