Как сгруппировать последовательные целые числа в sas?

Я хотел бы сгруппировать последовательные целые числа в sas.

data h;
input integer temperature;
cards;
1 33
2 33
3 34
5 35
6 37
9 33
10 34
;
run;

Я хотел бы, чтобы мой результат выглядел так

1 33 1
2 33 1
3 34 1
5 35 2
6 37 2
9 33 3
10 34 3

Заранее спасибо за помощь.


person CHAa    schedule 28.09.2016    source источник
comment
Я не мог понять всю концепцию сохранения.   -  person CHAa    schedule 28.09.2016
comment
Не могли бы вы привести пример? или код?   -  person CHAa    schedule 28.09.2016


Ответы (1)


Посмотрите на DIF и сохраните функцию. Обратите внимание, что ваши критерии и пример не совпадают. Вы говорите последовательно, но, похоже, подразумеваете увеличение 0 ИЛИ 1.

DIF вычисляет разницу между текущим и предыдущим наблюдением. RETAIN хранит значение в строках, пока оно не будет изменено явно.

Data want;
Set have;
 Retain group 0;
 Temp_dif = dif(temp);
 If temp_dif > 1 then group + 1;
 Run;

РЕДАКТИРОВАТЬ:

Data want;
Set have;
 Retain group 0;
 INT_dif = dif(integer);
 If int_dif > 1 then group + 1;
 Run;
person Reeza    schedule 28.09.2016
comment
group + (temp_dif > 1);, вероятно, я бы это сделал, особенно потому, что вы можете использовать diff (temp) непосредственно в этом (group + (dif(Temp) > 1);), но этот способ, вероятно, лучше для новичков. - person Joe; 28.09.2016
comment
Кроме того, мне кажется, что группы основаны на integer, а не на temperature, отсюда очевидное несоответствие, когда вы смотрите на температуру. - person Joe; 28.09.2016
comment
@Joe прав, можно изменить это, изменив температуру на целое число. - person Reeza; 29.09.2016