Решение 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 в доли относительно соответствующих значений первого наблюдения.