2014-02-11 92 views
0

我有53個變量名爲W1_C14_0到W1_C14_52,每個變量的值都是1到15.我需要找到每個數字中有多少個「法術」在這個列表中 - 即在每種情況下有多少個單獨的1,2等。這就是我正在做的,它工作正常,但有什麼辦法可以將它凝結成一個循環?SPSS循環通過一組變量與if語句組合

DO REPEAT first = W1_C14_0 to W1_C14_51/
second = W1_C14_1 to W1_C14_52 . 
    DO IF (SYSMIS(first) OR first<>second) . 
     DO IF (second=1) . 
     COMPUTE W1_spells1 = W1_spells1 + 1 . 
     ELSE IF (second=2) . 
     COMPUTE W1_spells2 = W1_spells2 + 1 . 
     ELSE IF (second=3) . 
     COMPUTE W1_spells3 = W1_spells3 + 1 . 

     *and so on down to... 

     ELSE IF (second=15) . 
     COMPUTE W1_spells15 = W1_spells15 + 1 . 
     END IF. 
    END IF. 
END REPEAT . 
+0

您需要更具體地瞭解什麼算作跑步以及最終如何獲得數據。如果你有一套'11112222',結果會是什麼? 「12121212」或「11221122」或「1112223」等怎麼樣?你可能會從這個[NABBLE問題](http://spssx-discussion.1045642.n5.nabble.com/Detecting-response-patterns-td57188​​47.html)中找到一些動機,或者我可能會考慮使用'VARSTOCASES'並使用'LAG'功能。 –

回答

0

您可以使用VECTOR命令遍歷拼寫變量。

VECTOR W1_spells = W1_spells1 TO W1_spells15. 

DO REPEAT first = W1_C14_0 to W1_C14_51/
second = W1_C14_1 to W1_C14_52 . 
    DO IF (SYSMIS(first) OR first<>second). 
     LOOP #i=1 TO 15. 
     DO IF (second=#i) . 
      COMPUTE W1_spells(#i) = W1_spells(#i) + 1. 
     END IF. 
     END LOOP. 
    END IF. 
END REPEAT.