2016-05-29 34 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