Запись нескольких переменных одновременно - PullRequest
1 голос
/ 08 апреля 2019

Итак, я хочу зациклить более 200 переменных (они не в порядке) и перекодировать строковые ответы в коды. У меня есть список кодовых кадров в Excel с более чем 2000 различных кодов для каждой строки. Так как они не в порядке, я хотел бы использовать Python в SPSS для этого, но, поскольку я новичок в этом, я не знаю, как написать реальный код перекодировки.

begin program.
import spss 
for v in ['a','b','c']: #list of variables I want to loop over
 # MISSING RECODE part ("string1"=1) ("string2"=2) ("string3"=3) etc.... up to whatever number of codes I want   
end program.

Не могли бы вы помочь с отсутствующей частью кода, я имею в виду, как должен выглядеть синтаксис?

Спасибо M

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Как указывает ответ @ eli-k, вам не нужно зацикливаться или делать что-либо в Python, чтобы применить одну и ту же схему перекодировки к нескольким переменным.Синтаксис Vanilla SPSS справляется с этим довольно хорошо.Однако наличие более 2000 пар строк в коде может быть проблематичным.(Иногда у меня возникают проблемы с отладкой синтаксиса RECODE только с 20 парами.)

Решением этого является использование AUTORECODE вместе с опцией APPLY TEMPLATE :

AUTORECODE var1 var2 var3 
  /INTO nvar1 nvar2 nvar3 
  /APPLY TEMPLATE = 'my_template.sat'

Файлы .sat, используемые SPSS в качестве шаблонов, являются просто особым случаем файлов .sav с другим расширением.У них есть ровно две переменные: строка с именем «Source_» и числовая переменная с именем «Target_» (обратите внимание на заглавные и конечные подчеркивания).Пока вы используете эти имена переменных, вы можете создать свой собственный шаблон, импортировав сопоставления строк и кодов из Excel в SPSS, а затем сохранив их в виде файла .sat.

Один ключевой момент, на который следует обратить внимание при использованииAUTORECODE: любые строки, найденные в данных, которых нет в столбце Source_, будут автоматически назначены новые коды.

1 голос
/ 08 апреля 2019

В синтаксисе SPSS вы можете использовать один и тот же шаблон перекодирования для нескольких переменных за раз без всякого цикла, например:

recode var1 var2 var3 ("apple"=1)("orange"=2)("banana"=3) into Nvar1 Nvar2 Nvar3.

Необходимо перекодирование в новые переменные, если вы хотите перекодировать изстроки в числа.В качестве альтернативы, если вы не хотите новых переменных, вы можете сделать это:

recode var1 var2 var3 ("apple"="1")("orange"="2")("banana"="3").
alter type var1 var2 var3 (f6.2).
...