1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Решение 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 в доли относительно соответствующих значений первого 
наблюдения.