2016-05-29 33 views
1

我有一位學生在網上收集了一項調查中的數據,因此每個響應都被賦予了一個變量,而不是具有任何響應的變量。我們需要一個評分算法來讀取報表並進行整合。我可以與如果每個項目作了發言做到這一點,例如,更容易使用spss中的循環和向量來組合變量

if Q1_1=1 var1=1. 
if Q1_2=1 var1=2. 
if Q1_3=1 var1=3. 
if Q1_4=1 var1=4. 

這樣做了200項調查(現在更像1000)將是一個阻力,受到很多錯別字,除非自動化。我沒有SPSS中向量和循環的經驗,但有些閱讀表明這是解決問題的方法。

我想運行的if語句,就像這樣(僞):

for items=1 1 to 30 
for responses=1 to 4 
    if Q1_2_1=1 a=1. 
    if Q1_2=1 a=2. 
    if Q1_3=1 a=3. 
    if Q1_4=1 a=4. 
compute newitem(items)=a. 
next response. 
next item. 

哪我希望會產生其中有4個反應之一爲它的原始對應一個新的變量(newitem1至30日) 4個可變信息。

以前從未寫過嚴肅的spss代碼:請指教!

+0

對於一個非常類似的問題和答案:http://stackoverflow.com/questions/37456141/spss-summing-up-multiple-variable-scores-depending-on-their-score/37459587#37459587 –

回答

1

這將做的工作:

* creating some sample data.  
data list free (",")/Item1_1 to Item1_4 Item2_1 to Item2_4 Item3_1 to Item3_4. 
begin data 
1,,,,,1,,,,,1,, 
,1,,,1,,,,1,,,, 
,,,1,,,1,,,,,1, 
end data. 

* now looping over the items and constructing the "NewItems". 
do repeat Item1=Item1_1 to Item1_4 
    /Item2=Item2_1 to Item2_4 
    /Item3=Item3_1 to Item3_4 
    /Val=1 to 4. 
    if Item1=1 NewItem1=Val. 
    if Item2=1 NewItem2=Val. 
    if Item3=1 NewItem3=Val. 
end repeat. 
execute. 

在您同時循環這種方式運行所有。

請注意,「ItemX_1至ItemX_4」僅適用於這四個變量在數據集中連續出現的情況。如果不是,則必須分別命名它們 - 「ItemX_1 ItemX_2 ItemX_3 itemX_4」。

現在,如果你有很多這樣的項目集,所有的定期命名爲例子,下面的宏可以縮短工藝流程:

define !DoItems (ItemList=!cmdend) 
!do !Item !in (!ItemList) 
    do repeat !Item=!concat(!Item,"_1") !concat(!Item,"_2") !concat(!Item,"_3") !concat(!Item,"_4")/Val=1 2 3 4. 
    if !item=1 !concat("New",!Item)=Val. 
    end repeat. 
!doend 
execute. 
!enddefine. 

* now you just have to call the macro and list all your Item names: 
!DoItems ItemList=Item1 Item2 Item3. 

宏將與任何項目名稱工作,只要變量被命名爲ItemName_1,ItemName_2等'。

+0

後一點擺弄,那很好。非常感謝。 – Fitz

+0

非常好。請標記爲已解決... –

+0

此問題已解決。非常感謝。 – Fitz