2015-05-14 2 views
0

Не уверен, что мне нужно использовать лаг для этого. Но вот что я хочу делать.sas - lag by acct id?

Вот данные у меня есть ...

acct sort_order  type 
111111  1   standard 
111111  1   standard 
111111  2   non-standard 
111111  3   other 
111111  3   other 
222222  2   non-standard 
222222  3   other 
222222  3   other 

Это то, что я хочу, чтобы в конечном итоге ...

acct  sort_order type   want 
111111  1  standard  standard 
111111  1  standard  standard 
111111  2  non-standard standard 
111111  3  other   standard 
111111  3  other   standard 
222222  2  non-standard non-standard 
222222  3  other   non-standard 
222222  3  other   non-standard 

Я мой набор данных сортируются по учетный и sort_order. Для каждого acct я хочу взять первый тип (на основе sort_order) и скопировать его в каждую строку этого acct. Например, acct 111111 имеет «стандарт», поскольку это первый тип. Я хочу, чтобы каждое наблюдение за acct 111111 было «стандартным», как его тип.

я попытался сделать следующее с отставанием, но это не совсем правильно работать ...

data want; 
set have; 
by acct; 
want = lag(type); 
if first.acct then want = type; 
run; 

ответ

1

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

Data want; 
    set have; 
    by accnt; 
    retain want; 
    if first.accnt then want = type; 
run; 
+0

Спасибо! Это работает отлично. – user2941280