2014-02-10 2 views
1

У меня следующий вопрос: У меня есть мои данные, выглядит следующим образом:SPSS - Как ранжировать несколько переменных путем многократного измерения

UserId |Act1 |Act2 |Act3 |Act4 
1  | 2 | 3 | 2 | 2 
1  | 2 | 5 | 1 | 0 
1  | 0 | 3 | 3 | 0 
2  | 2 | 2 | 3 | 0 
2  | 2 | 2 | 2 | 2 
2  | 1 | 2 | 1 | 5 
... 
999 | 1 | 2 | 2 | 3 

Я хочу ранжировать количество мероприятий для каждого случая и создать переменную « Стратегия». Если Act1 является самым высоким из Act1, ACT2, ACT3 и Act4, тогда «Стратегия» должна быть равна «1». Если Act2 выше, то «Стратегия» должна быть равна «2» и т. Д. У меня одинаковый UserId, так как я сделал повторное измерение той же переменной (в этом примере 3 раза). Как выглядит код синтаксиса SPSS? Могу ли я сделать цикл через каждый случай (даже если UserId - это то же самое), чтобы определить стратегию, которую мои пользователи использовали в эксперименте в этот раз? Идеи?

Спасибо, Best, Евгений

+0

Я не совсем уверен, из вашего описания, как вы делаете ранжирование. Таким образом, для 'UserId' 1 является' Act2' самым высоким, потому что сумма строк является самой большой (например, 'для UserID = 1, Act2 = 3 + 5 + 3 = 11')? Кроме того, большинству рейтинговых стратегий необходимо будет указать, как обращаться со связями. –

ответ

0

Я, кажется, нашел решение моей проблемы. Это выглядит так:

/*Computing strategy*/ 


/*Calculating dominant action*/ 

LOOP #i=1 TO 999. /*Assuming I have 999 cases. 

/* Calculating the biggest value among activities. 
    VECTOR #act(4). /* This is a temporary array variable. 
    COMPUTE #act(1) = Act1. 
    COMPUTE #act(2) = Act2. 
    COMPUTE #act(3) = Act3. 
    COMPUTE #act(4) = Act4. 

/*Bubble sorting the numbers. 
    LOOP #j=1 to 3. 
     LOOP #k=#j+1 TO 4. 
     DO IF (#act(#k) >= #act(#j)). 

      COMPUTE #temp = #k. 
      COMPUTE #act(#j) = #act(#k). 
      COMPUTE #act(#k) = #temp.    

     END IF. 
    END LOOP. 
/*At this point we have the biggest value in the first position of the array variable, i.e. "#act(1)". 




/*Here I check whether the specific action is equal to the highest score.  
    VECTOR #strat(4). 
    COMPUTE #strat(1) = Act1. 
    COMPUTE #strat(2) = Act2. 
    COMPUTE #strat(3) = Act3. 
    COMPUTE #strat(4) = Act4. 

/*Here I create 2 temporary variables to fix the result. 
    COMPUTE #temp1 = 0. 
    COMPUTE #temp2 = 0. 
/*Next step is hard to explain, but: firstly, an participant could use two strategies, which is ok; secondly, if a participant uses more than 2 strategies, I assume he was acting not strategicaly (it comes from my research design, it may not fit to yours; e.g. Act1 = 0, Act2 = 0, Act3 = 0, Act4=0; or all actions are euqal to 3). 
     LOOP #m=1 TO 4. 
      DO IF (#strat(#m) = #act(1)). 
       DO IF (#temp1 = 0). 
        COMPUTE #temp1 = #m. /* If the variable has the highest value it is assumed to be a strategy; the value is stored in the variable "#temp1". 
       ELSE. 
        DO IF (#temp2=0). /*if the first strtegy is assigned, then the second temporry variable is used, "#temp2". 
        COMPUTE #temp2 = #m. 
        ELSE. 
        COMPUTE #temp1 = 0. /*If all more than 2 variables have "highest" score, than no strategy was played; both temporary variables are defined as 0. 
        COMPUTE #temp2 = 0. 
        END IF. 
       END IF. 
      END IF. 

     END LOOP. 
/*And finally we create variables which are stored in our dataset and prescribe them values of our temporary variables. 
     COMPUTE DominantStrategy1 = #temp1. 
     COMPUTE DominantStrategy2 = #temp2. 

    END LOOP. 
END CASE. /*Making the same with the next case. 
END LOOP. 

EXECUTE. 

Это было мое решение, и это сработало!

Бест, Eugen

Смежные вопросы