*Вопрос. Имеется медицинская база данных с информацией о переломах у детей. В ней есть сведения о 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 .