* Тема: Замена пропусков средним значением по подгруппе. * Ключевые слова: пропущенные значения, среднее, подгруппа, RMV. * Опубликован: 09.03.2008. * Автор: Raynald Levesque. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/WorkWithMissing/RepaceMissingByMeanOfCategory.txt (.sps). *(Вопрос) Как заменить пропущенные значения средним значением переменной по той группе наблюдений, к которым относится данное наблюдение? Наблюдения классифицированы на 25 подгрупп. *(Ответ) Метод 1: размещен в SPSSX 30.03.2003. Автор: Raynald Levesque. Метод 2: добавлен Реем 17.01.2004. * Пример данных, имеющих некоторое количество пропусков. SET SEED=123456. INPUT PROGRAM. LOOP id=1 TO 250. - COMPUTE cat1=RND(UNIFORM(25)). - IF (UNIFORM(1)>.15) var1=UNIFORM(5). - END CASE. END LOOP. END FILE. END INPUT PROGRAM. SAVE OUTFILE='c:\\temp\\temp.sav'. ********************************. * Решение (МЕТОД 1). ********************************. GET FILE='c:\\temp\\temp.sav'. SORT CASES BY cat1. AGGREGATE OUTFILE=* /PRESORTED /BREAK=cat1 /meanvar1=MEAN(var1). LIST /* для проверки результатов работы */. COMPUTE nobreak=1. MATCH FILES FILE=* /BY=nobreak /FIRST=first /LAST=last. WRITE OUTFILE='c:\\temp\\define vars1.sps' /'IF MISSING(var2) AND cat1 = 'cat1' var2='meanvar1'.'. EXECUTE. GET FILE='c:\\temp\\temp.sav'. COMPUTE var2=var1. /* сохраняем исходные переменные нетронутыми*/. INCLUDE 'c:\\temp\\define vars1.sps'. EXECUTE. ********************************. * Решение (МЕТОД 2). ********************************. GET FILE='c:\\temp\\temp.sav'. SORT CASES BY cat1. SPLIT FILE BY cat1. RMV var2=MEAN(var1,ALL). SPLIT FILE OFF.