Выберите случаи, если значение больше, чем среднее по группе - PullRequest
0 голосов
/ 04 декабря 2018

Есть ли способ включить средства целых переменных в синтаксис Select Cases If?

У меня есть набор данных с тремя группами по n = 20 в каждой (сортировка переменной grp со значениями 1, 2 или 3) ирезультаты предварительной и последующей оценки (переменная до и после).Я хочу выбрать для каждой группы только 10 случаев, когда предварительное значение выше, чем среднее значение этого значения в группе.

В псевдокоде:

select if pre-value > mean(grp)

Так что, если среднее значение вгруппа 1 - 15, это то, с чем должны сравниваться все значения из случаев группы один.Но в то же время, если среднее значение для группы 2 равно 20, это то, с чем следует сравнивать значения из случаев в группе 2.

Сейчас я вижу только функцию MEAN (arg1, arg2, ...) вокно Select Cases If, но нет возможности получить среднее значение для всей переменной, тем более с дополнительным условием (например, группой).

Есть ли способ сделать это с помощью Select Cases If синтаксиса или иным образом?

1 Ответ

0 голосов
/ 04 декабря 2018

Вам необходимо создать новую переменную, которая будет содержать среднее значение группы (поэтому все строки в каждой группе будут иметь одинаковое значение в этой переменной - среднее значение для группы).Затем вы можете сравнить каждую строку с этим значением.

Сначала я создам несколько примеров данных для демонстрации:

data list list/grp pre_value .
begin data
1 3
1 6
1 8
2 1
2 4
2 9
3 55
3 43 
3 76
end data.

Теперь вы можете вычислить среднее по группе и выбрать:

AGGREGATE  /OUTFILE=* MODE=ADDVARIABLES  /BREAK=grp  /GrpMean=MEAN(pre_value).
select if pre_value > GrpMean.

.

...