SAS возвращает первое значение в группе для остальной части группы - PullRequest
2 голосов
/ 07 марта 2012

Предположим, у меня есть следующие данные, но я в основном хочу скопировать первое значение a и b для остальных значений в группе (таблица внизу).

Например, в группе1, первое значение в a = 3. Я хочу заменить 2, 4, 1 в группе на 3 - то же самое для переменной b.

Исходные данные:

grp a   b
----------
1   3   2
1   2   1
1   4   2
1   1   3
2   2   4
2   1   1
2   2   2
2   3   1

ОбновленоДанные:

grp a   b
----------
1   3   2
1   3   2
1   3   2
1   3   2
2   2   4
2   2   4
2   2   4
2   2   4

Заранее спасибо.

1 Ответ

5 голосов
/ 07 марта 2012

Для этого вы можете использовать обработку по группам и оператор сохранения.Обратите внимание, что входной набор данных должен быть сначала отсортирован по группе, чтобы это работало.

data output(keep=grp a b);
  retain firsta firstb;
  set input;
  by grp;
  if first.grp then do;
    firsta = a;
    firstb = b;
  end;
  else do;
    a = firsta;
    b = firstb;
  end;
run;
...