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
47
48
* Группировка на квинтили на основе равных вкладов в общую сумму.

(из SPSS AnswerNet)

Задача: ввести группирующую переменную, которая принимала бы значения от 
1 до 5. Значение 5 должно объединять наименьшие значения исходной переменной,
которые дают суммарный 20%-й вклад в общую сумму значений. Значение 4 - следующую группу более крупных значений,
которые также дают 20%-й вклад в общую сумму. И так далее. Значение 1 объединяет наиболее крупные
значения, также дающие 20%-й вклад в общую сумму.

В решении есть небольшой трюк, связанный с вычислением накопленной
суммы переменной, значения которой группируем. Там используется команда LEAVE.
Сама группировка после вычисления общей и накопленной сумм производится серией
инструкций IF.

*****. 
INPUT PROGRAM. 
LOOP #I = 1 TO 100. 
COMPUTE salesvol = TRUNC(UNIFORM(100000)) + 1 . 
END CASE. 
END LOOP. 
END FILE. 
END INPUT PROGRAM. 
COMPUTE cust_id = $casenum. 
COMPUTE dummy = 1. 
EXE.
 
AGGREGATE /OUTFILE='AGGR.SAV' 
/BREAK=dummy 
/totl_vol = SUM(salesvol). 
MATCH FILES /FILE=* 
/TABLE='Aggr.sav' 
/BY dummy. 
EXE.
 
SORT CASES BY 
salesvol (A) . 
COMPUTE cm_sale = cm_sale + salesvol. 
LEAVE cm_sale. 
FORMATS salesvol totl_vol cm_sale (DOLLAR8). 
EXE. 

IF cm_sale<=totl_vol quintile1=1.
IF cm_sale< .8*totl_vol quintile1=2.
IF cm_sale< .6*totl_vol quintile1=3.
IF cm_sale< .4*totl_vol quintile1=4.
IF cm_sale< .2*totl_vol quintile1=5.
EXE.