*(Вопрос) Среди моих данных есть 4 блока по 5 однотипных вопросов (с одинаковыми категориями ответов) в каждом.
Для каждого наблюдения в каждом блоке мне надо найти модальное значение ответа.
*(Ответ) Размещён в SPSSX-L 28.08.2001, автор: rlevesque@videotron.ca.
* Если распределение ответов будет мультимодальным, будет выбран ответ с наибольшим кодом!
*Генерация примера данных.
INPUT PROGRAM.
SET SEED=987651423.
VECTOR q(20F8.0).
LOOP id=1 TO 25.
+ LEAVE id.
+ LOOP #=1 TO 20.
+ COMPUTE q(#)=TRUNC(UNIFORM(5)+1).
+ END LOOP.
+ END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.
**** Начало обработки.
VECTOR resp=q1 TO q20.
LOOP qnb=1 TO 20.
COMPUTE resp=resp(qnb).
COMPUTE cat=1+TRUNC(qnb/5.1).
XSAVE OUTFILE='c:\\temp\\temp.sav' /KEEP=id cat qnb resp.
END LOOP.
EXECUTE.
GET FILE='c:\\temp\\temp.sav'.
* Аггрегируем наблюдения по id, cat, resp. Это даст нам частотное распределение
вариантов ответов для каждого id внутри каждой категории.
AGGREGATE
/OUTFILE=*
/BREAK=id cat resp
/nbresp = N(qnb).
* Находим и сохраняем лишь варианты ответов с наибольшими частотами по каждому id и в каждой cat.
SORT CASES BY id cat nbresp.
ADD FILES FILE=* /BY=id cat /LAST=last.
SELECT IF last=1.
VARIABLE LABELS nbresp 'Число ответов' resp 'Вариант ответа'.
EXECUTE.