Итак, я хочу зациклить более 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.
Не могли бы вы помочь с отсутствующей частью кода, я имею в виду, как должен выглядеть синтаксис?
Спасибо М
Это будет одна и та же схема перекодирования для каждой упомянутой переменной.
Вам нужно предоставить больше информации, чем это. Что вы пробовали? Вы должны попробовать это сами, чтобы вы могли поделиться с нами кодом, показывающим, что вы пытаетесь, или вы должны, по крайней мере, задать более конкретные вопросы об использовании SPSS. Прочтите Кто-нибудь может мне помочь?
В синтаксисе 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).
Как указывает ответ @eli-k, вам не нужно зацикливаться или что-либо делать в Python, чтобы применить одну и ту же схему перекодирования к нескольким переменным. Синтаксис Vanilla SPSS справляется с этим довольно хорошо. Однако наличие более 2000 пар строк и кодов может быть проблематичным. (Иногда у меня возникают проблемы с отладкой синтаксиса RECODE только с 20 парами.)
Решением этой проблемы является использование средства АВТОКОД вместе с его опцией ПРИМЕНИТЬ ШАБЛОН:
AUTORECODE var1 var2 var3
/INTO nvar1 nvar2 nvar3
/APPLY TEMPLATE = 'my_template.sat'
Файлы .sat, используемые SPSS в качестве шаблонов, являются просто частным случаем файлов .sav с другим расширением. У них есть ровно две переменные: строка с именем «Source_» и числовая переменная с именем «Target_» (обратите внимание на использование заглавных букв и подчеркивание в конце). Пока вы используете эти имена переменных, вы можете создать свой собственный шаблон, импортировав сопоставления строк и кодов из Excel в SPSS, а затем сохранив их в виде файла .sat.
Одно ключевое замечание об использовании AUTORECODE: всем строкам, найденным в данных, которых нет в столбце Source_, будут автоматически назначены новые коды.
Привет, спасибо обоим, Кевин, но вы используете этот список строк / кодов в Excel, просто меняя расширение файла с xlsx на sat? Я пытался автоматизировать это, но это не работает (вроде) ufile.io/csrzx здесь я загрузил 3 файла excel, sps с синтаксисом, и я пытаюсь сохранить файл sat и применить для каждого файла, но когда я пытаюсь применить и save sat for file_part3 создает дубликаты моих строк, добавляя к нему место и присваивая ему другие коды
Я хочу сказать, что в моей ссылке выше есть 3 файла excel со списком фруктов, в первом файле я делаю автоперекодирование и просто сохраняю шаблон, затем во втором файле я применяю сохраненный шаблон + снова сохраняю шаблон под тем же именем - до этого момента он работает, но затем применение шаблона к 3-му файлу и повторное сохранение шаблона не работает, как раньше, он дает случайные коды, а в файле .sat у меня есть дублированные фрукты с пробелами.
Я предлагаю вам использовать /APPLY TEMPLATE = 'my_template.sat'
один раз с несколькими значениями, а затем открыть «my_template.sat», чтобы увидеть, как он построен, и посмотреть, сможете ли вы получить данные в своем файле Excel, чтобы поместиться в него. Если вы не можете справиться с этим, я предлагаю вам начать новый вопрос для автоматизации задачи получения значений из файла excel в команду перекодирования - мы, вероятно, сможем вам помочь с этим.
Вы применяете одну и ту же схему перекодирования к каждой переменной или каждая переменная имеет свою собственную схему?