Замена значений, превосходящих x (модернизированная версия)
Это версия синтаксиса Replace values higher than n by the mean of the other values, адаптированная к возможностями современных версий SPSS (протестирована на IBM SPSS Statistics 24). Код стал значительно проще за счет того, что больше не требуется сохранять агрегированные данные во внешний файл и затем делать слияние с основным: команда AGGREGATE
просто сохраняет агрегаты в исходный файл данных как новую переменную. Код упростился до 4 действий: создадим переменную с "валидными" значениями, агрегируем, применим условия на замену собственно с самой заменой и удалим лишние переменные (опционально).
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 | * Encoding: UTF-8. * Тема: замена значений, превосходящих определённую величину, средним по оставшимся значениям. * Пример данных. DATA LIST LIST /hrt clientid linenum. BEGIN DATA 485 1002 1 280 1002 2 100 1002 3 420 1002 4 410 1002 5 510 1002 6 END DATA. LIST. * Решение. IF hrt<=480 hrt_norm = hrt. AGGREGATE /OUTFILE=* MODE=ADDVARIABLES /meanhrt = MEAN(hrt_norm). IF hrt>480 hrt=meanhrt. EXECUTE. * Удаляем ненужные переменные. DELETE VARIABLES hrt_norm meanhrt. |
Можно обратить внимание на отсутствие подкоманды BREAK
в AGGREGATE
: теперь если требуется агрегирование по всему файлу, подкоманду можно опускать и не создавать фиктивной группирующей переменной как раньше. Можно также увидеть относительно новую команду DELETE VARIABLES
для удаления ненужных переменных. Однако использование команды ADD FILES
с подкомандой KEEP
, как в исходном решении, в общем случае имеет преимущества над DELETE VARIABLES
в том, что она позволяет одновременно и переупорядочить переменные.