Подставить среднее значение по категории на место пропуска
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 56 57 | * Тема: Замена пропусков средним значением по подгруппе. * Ключевые слова: пропущенные значения, среднее, подгруппа, 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. |
Related pages
...