2015-08-06 5 views
2

Я работаю с большим набором данных в SPSS. Одна переменная представляет собой первый крупный ученик и имеет значения 1-15, относящиеся к 15 различным типам студентов-майоров. Вторая переменная такая же, но для второстепенных/двойных майоров.Объединение переменных в spss python

Я хочу объединить ответы в одну основную группу переменных.

Я получил его на работу следующим образом:

do if(major1Group =1 or major2Group=1). 
compute majorGroup = 1. 
ELSE IF(major1Group = 2 or major2Group = 2). 
compute majorGroup = 2. 
else if(major1Group =3 or major2Group=3). 
compute majorGroup = 3. 
else if(major1Group =4 or major2Group=4). 
compute majorGroup = 4. 
else if(major1Group =5 or major2Group=5). 
compute majorGroup = 5. 
else if(major1Group =6 or major2Group=6). 
compute majorGroup = 6. 
else if(major1Group =7 or major2Group=7). 
compute majorGroup = 7. 
else if(major1Group =8 or major2Group=8). 
compute majorGroup = 8. 
else if(major1Group =9 or major2Group=9). 
compute majorGroup = 9. 
else if(major1Group =10 or major2Group=10). 
compute majorGroup = 10. 
else if(major1Group =11 or major2Group=11). 
compute majorGroup = 11. 
else if(major1Group =12 or major2Group=12). 
compute majorGroup = 12. 
ELSE if(major1Group =13 or major2Group=13). 
compute majorGroup = 13. 
else if(major1Group =14 or major2Group=14). 
compute majorGroup = 14. 
else if(major1Group =15 or major2Group=15). 
compute majorGroup = 15. 
end if. 

... но я уверен, что должен быть более эффективным способом для будущего. Мои попытки:

begin program. 
    import spss,spssaux 
    vdict = spssaux.VariableDict 
    major1Group = vdict("major1Group") 
    major2Group = vdict("major2Group") 
    iterations = len(major1Group) 
    i = 1 
    majorGroup = [] 
    while i <= iterations: 
     if ((major1Group == i) or (major2Group == i)): 
      majorGroup[i] = i 
     i = i+1 

    end program. 

Огромное спасибо. Я относительно новичок и для SPSS, и для python, поэтому любая помощь очень ценится.

+1

Прежде чем пытаться оптимизировать свой код, логику в коде, как она есть, или в по крайней мере, мне кажется, очень двусмысленно. Поскольку у вас это есть, конечный конец кодов курса будет иметь меньшую вероятность быть захваченным в вашей целевой переменной, поскольку он может присутствовать с более ранними кодами. Надеюсь, что я попытаюсь ответить на ваши вопросы. Возможно, вы могли бы прояснить свои цели здесь. –

ответ

2

вы получите тот же результат (отсылая к коду синтаксиса SPSS) с помощью одной строки кода:

COMPUTE majorGroup = MIN(major1Group, major2Group). 
Смежные вопросы