2016-09-28 4 views
0

Я хотел бы сгруппировать последовательные целые числа в 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 

Спасибо за вашу помощь, заранее.

+0

Подсказка: 'RETAIN'. –

+0

Я не мог понять полную концепцию сохранения. – CHAa

+0

Не против, давая пример? или код? – CHAa

ответ

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; 

EDIT:

Data want; 
Set have; 
Retain group 0; 
INT_dif = dif(integer); 
If int_dif > 1 then group + 1; 
Run; 
+0

спасибо, есть еще один вопрос – CHAa

+0

'group + (temp_dif> 1);' вероятно, как я это сделал бы, особенно если вы можете использовать diff (temp) непосредственно в этом ('group + (dif (Temp) > 1); '), но этот способ, вероятно, лучше для новичков. – Joe

+0

Кроме того, мне кажется, что группы основаны на «целой» не на «температуре», а потому на кажущемся расхождении, когда вы смотрите на температуру. – Joe

Смежные вопросы