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
49
50
51
52
53
54
55
*Вопрос. Имеется медицинская база данных с информацией о переломах у детей. В ней есть сведения о 194 детях, однако, поскольку у некоторых из них имелись множественные переломы, фактически имеется 630 наблюдений.

* Например, ребёнок с 3 сломанными рёбрами будет введён в базу 3 раза. Ребёнок с одним сломанным ребром и повреждением черепа будет введён в базу 2 раза:
 ID      FRACTURE   FRACTURECAT
 211    ребро1            ребро
 211    ребро4            ребро
 211    ребро7            ребро
 003    череп           череп
 003    ребро2           ребро
 ...

* Мне просто нужно подсчитать процент детей, имевших переломы рёбер 
 (т.е., % = [число детей, имевших, по крайней мере, 1 перелом рёбер] / 194 * 100), процент детей, имевших черепные травмы и т.д. Я полагаю, мне нужна обычная кросстабуляция, но как избавиться от того, чтобы система не считала несколько раз переломы рёбер в том случае, если у ребёнка их было несколько?.

*(Ответ) Размещено в SPSSX-L, автор: Raynald Levesque, 01.07.2004.
* Веб: http://www.spsstools.net .


DATA LIST LIST /ID(F3)      FRACTURE(A8)   FRACTURECAT(A8).
BEGIN DATA
211    ребро1    ребро
211    ребро4    ребро
211    ребро7    ребро
123    ребро2    ребро
123    ребро5    ребро 
003    череп   череп
003    ребро1   ребро
111    ребро2    ребро
128    череп   череп
END DATA.
SAVE OUTFILE='c:\\temp\\original data.sav'.

SORT CASES BY id fracturecat.
ADD FILES FILE=* /BY=id fracturecat /FIRST=fract1.
ADD FILES FILE=* /BY=id /FIRST=nbid.
SELECT IF fract1.
AGGREGATE OUTFILE=*
/BREAK=fracturecat
/n=N /nbid=SUM(nbid).
COMPUTE nobreak=1.
AGGREGATE OUTFILE='c:\\temp\\totalid.sav'
/BREAK=nobreak
/totalid=SUM(nbid).
MATCH FILES FILE=*
/TABLE='c:\\temp\\totalid.sav'
/BY=nobreak.
COMPUTE pc=n/totalid*100.
FORMATS pc(PCT5.2).
VARIABLE LABEL pc '% с переломом' /totalid 'общее число пациентов' /n 'число пациентов с данной категорией перелома'.
SUMMARIZE
  /TABLES=fracturecat n totalid pc
  /FORMAT=VALIDLIST NOCASENUM TOTAL
  /TITLE='Сводка'
  /MISSING=VARIABLE
  /CELLS=NONE .