Измените все метки значений на числовые в SPSS

Мне нужно изменить все метки значений всех моих переменных в моем файле spss, чтобы они были самим значением.

Я впервые попробовал - Value Labels ALL. ВЫПОЛНЯТЬ.

Это удаляет метки значений, но также полностью удаляет значение. Мне нужно, чтобы у меня была какая-то метка, поскольку я конвертирую файл, и когда значения не определены, он превращает значение в числовое. Поэтому мне нужно, чтобы все метки значений были преобразованы в числа, чтобы метка каждого значения была просто значением - значение = 1, затем метка = 1.

Любые идеи сделать это со всеми моими переменными ??

Заранее спасибо!!


person PTrem1    schedule 05.09.2016    source источник
comment
Возможно использование python, но я не вижу, при каких обстоятельствах это было бы вообще полезно? Если вы хотите сначала уточнить, действительно ли это то, что вы хотите сделать?   -  person Jignesh Sutar    schedule 05.09.2016
comment
Я конвертирую свой файл .SAV в формат MDD / DDF. Идентификатор элемента выходил с полным текстом в качестве имени (немного громоздко), поэтому я хочу, чтобы имена элементов были равны 1 любому. Удаление значения в SPSS приводит к изменению типа переменной на числовой, а не категориальный после преобразования файла. Итак, я думаю, что лучший способ обойти это для всех моих переменных - изменить метку значения на фактическое значение.   -  person PTrem1    schedule 05.09.2016
comment
Я почти ничего не знаю о форматах файлов, которые вы упоминаете (MDD / DDF), однако пробовали ли вы изменить VARIABLE LEVEL назначения с SCALE на NOMINAL. Было бы намного проще сделать это для всех необходимых переменных, чем установить метки значений для всех переменных / значений.   -  person Jignesh Sutar    schedule 05.09.2016
comment
Да, похоже, это не имело никакого значения, когда, к сожалению, все значения были удалены. Переменная фактически остается номинальной после удаления всех значений. Похоже, что нет простого способа изменить все метки значений!   -  person PTrem1    schedule 06.09.2016
comment
Достаточно просто сделать при использовании python ...   -  person Jignesh Sutar    schedule 06.09.2016
comment
Возможно, есть что-то более короткое через PYTHON, но это можно автоматизировать только с помощью синтаксиса: захватить все значения всех переменных с помощью соответствующей команды OMS и freq all. Затем создайте команду в каждой строке, чтобы добавить значение в качестве метки, записать в файл синтаксиса и вставить его.   -  person eli-k    schedule 06.09.2016


Ответы (1)


Вот решение, с которого можно начать:

get file="C:\Program Files\IBM\SPSS\Statistics\23\Samples\English\Employee data.sav".
begin program.
import spss, spssaux, spssdata
spss.Submit("set mprint on.")
vd=spssaux.VariableDict(variableType ="numeric")
for v in vd:
    allvalues = list(set(item[0] for item in spssdata.Spssdata(v.VariableName, names=False).fetchall()))
    if allvalues:
        cmd="value labels " + v.VariableName + "\n".join(["  %(i)s '%(i)s'" %locals() for i in allvalues if i <> None]) + "."
        spss.Submit(cmd)
spss.Submit("set mprint off.")
end program.

Вы можете прочитать this, чтобы понять поведение fetchall при чтении date переменных (или просто исключить переменные даты из пометки их значений, если они не вызывают проблем?)

person Jignesh Sutar    schedule 06.09.2016