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
* id - это переменная, содержащая коды библиотек. Мне требуется составить выборку, 
в которую библиотеки будут отбираться с вероятностью, пропорциональной числу занятых
в них библиотекарей. 

* Этот метод не поместит библиотеку в выборку большее число раз, чем количество занятых в ней библиотекарей.
* Автор: Raynald Levesque, Raynald@spsstools.net .

DATA LIST FREE / id numb .
BEGIN DATA
1 5 2 15 3 30
END DATA.

* Следующий цикл "распаковывает" файл данных.
* Каждая библиотека "размножается" в фале данных на то
число строк, сколько работает в ней библиотекарей.
LOOP cnt=1 TO numb.
	XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP id numb.
END LOOP.
EXECUTE.

GET
  FILE='c:\\temp\\temp.sav'.

COMPUTE draw=UNIFORM(1).
RANK
  VARIABLES=draw  (A) /RANK /PRINT=NO
  /TIES=MEAN .

* В следующей строчке исправьте 30 на желаемый объём выборки.
SELECT IF (rdraw<=30).
EXECUTE.