Мне всегда приходится быстро обновлять обработку по группам, когда я использую переменные первой и последней точки с данными, но сегодня я увидел кое-что интересное.
Вот пример набора данных:
data DS1;
input ID1 ID2;
datalines;
1 100
1 200
1 300
2 400
3 500
3 500
4 600
;
run;
Я обычно использую сохранение с обработкой по группам и переменные первой или последней точки для манипулирования моими данными, например так:
data ByGroup1;
set DS1;
by ID1 ID2;
retain Count;
if first.ID1 then Count = 0;
Count + 1;
run;
Но я читал пост SAS.com, где индивид использовал следующий метод (без оператора сохранения).
data ByGroup2;
set DS1;
by ID1 ID2;
if first.ID1 then Count = 0;
Count + 1;
run;
Оба метода возвращают один и тот же набор данных:
ID1 ID2 Count
1 100 1
1 200 2
1 300 3
2 400 1
3 500 1
3 500 2
4 600 1
Переменные неявно сохраняются в PDV при выполнении групповой обработкой? Или же программа никогда не вернется к началу шага данных, пока не достигнет конца группы?
Я думаю, что я запутался в механике того, как эта переменная итерируется без сохранения, так как я так привык явно использовать сохранение, когда это необходимо.