Решение SPSS AnswerNet
Код решения: 100008355
Продукт: SPSS Base
Версия:
ОС:
Тип вопроса: синтаксис/пакетный режим/скрипты
Подтип вопроса: Преобразования данных
Тема: Вычисление процентов на основе значений из первого наблюдения.
Описание:
Вопрос.
У меня есть набор данных, скажем, 26 наблюдений и 10 переменных.
Я хочу разделить значение каждого наблюдения по выбранной переменной на
значение первого наблюдения по этой же переменной. И так поступить с каждой
из 10 переменных. Единственное, что я мог бы тут придумать - это серия
сортировок с инструкциями COMPUTE и лаговыми функциями, но это, наверное,
будет довольно криво. Есть ли более простой способ?
Ответ.
Есть способ, требующий лишь одной инструкции COMPUTE. Вот пример такого
синтаксиса. Он предполагает, что у вас есть 26 наблюдений, причём первое из
них - то, которое даёт нам делитель для каждой из 10 переменных. Предполагается
также, что первое наблюдение имеет валидные значения для всех задействованных переменных.
** Во-первых, транспонируем набор данных.
FLIP.
** Теперь создадим ряд переменных, значения которых будут долями от значения переменной
VAR0001 (которая содержит все значения первого наблюдения из исходного файла).
DO REPEAT a=var002 to var026 / b=newv002 to newv026.
COMPUTE b=a/var001.
END REPEAT.
EXECUTE.
** Теперь заново транспонируем файл .
FLIP.
** Теперь создадим переменную - счётчик наблюдений и выберем наблюдения на основе этого
счётчика. Поскольку в исходном наборе было 26 наблюдений, то в файле данных теперь имеется
51 наблюдение. Нам нужно выбрать наблюдение номер 1 (базу) и наблюдения с 27 по 51,
поскольку именно они содержат проценты (доли).
COMPUTE counter=$casenum.
EXECUTE.
SELECT IF (counter=1 or counter ge 27).
EXECUTE.
* В результате всего этого мы конвертировали исходные значения переменных для
наблюдений со 2 по 26 в доли относительно соответствующих значений первого
наблюдения.