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
* ВОПРОС:
Нужно подсчитать частоту встречаемости значений когда те могут быть раскиданы в нескольких строковых переменных. В частности, я использую классификатор (ICD-9) для фиксации основной причины госпитализации пациентов. Их 200 человек и каждый может иметь несколько госпитализаций с разными причинами.

Пример: Пациент A был госпитализирован 8 раз: 2 раза 'сердечный приступ', 1 раз
'камни в почках', 4 раза 'обезвоживание', 1раз 'инсульт'. Пациент B : 1 раз 'пневмония', 1 раз 'инсульт', 1 раз 'колики'. Пациент C: 1 раз 'обезвоживание', 1раз  'сердечный приступ'.. и т.д.

Как подсчитать частоту встречаемости причин госпитализации для всех пациентов?

* РЕШЕНИЕ (размещено в SPSSX-L, автор: rlevesque@videotron.ca, 04.06.2001).


DATA LIST LIST /id(A10) cause1(A20) cause2(A20) cause3(A20) cause4(A20).
BEGIN DATA
'Пациент A'  'сердечный приступ''сердечный приступ' 'камни в почках''обезвоживание'
'Пациент B' 'пневмония' 'инсульт' 'колики' 
'Пациент C'  'обезвоживание' 'сердечный приступ'
END DATA.
LIST.

* Изменим структуру данных.
VECTOR cause=cause1 TO cause4.
STRING cause(A20).
LOOP cnt=1 TO 4.
COMPUTE cause=cause(cnt).
XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=id cause.
END LOOP.
EXECUTE.

GET FILE='c:\\temp\\temp.sav'.
SELECT IF LENGTH(RTRIM(cause))>0.
AUTORECODE cause /INTO cause1.
FREQUENCIES
  VARIABLES=cause1
  /ORDER=  ANALYSIS .