Это версия синтаксиса 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 в том, что она позволяет одновременно и переупорядочить переменные.