※ 引述《c21221203 (kkii)》之銘言:
: [程式問題]:
: 小弟我想對以下資料,把ID當成不同組跑以下程式,但不知道如何把一個動作
: 依組別來進行。
: RETAIN flag ;
: IF flag < SETTLE_PRICE then flag = SETTLE_PRICE ;RUN;
: [問題敘述]:
: dateDate exdae settle_price ID
: 1/2 1/15 13 1
: 1/3 1/15 13 1
: 1/4 1/15 14 1
: 1/7 1/15 15 1
: 1/8 1/15 16 1
: 1/9 1/15 19 1
: 1/10 1/15 14 2
: 1/11 1/15 17 2
: 1/12 1/15 17 2
: 1/13 1/15 25 2
: 1/14 1/15 27 2
: 1/15 1/15 15 3
: 1/16 2/16 19 3
: 1/17 2/16 20 3
: 1/18 2/16 29 3
: 1/19 2/16 29 3
: 1/20 2/16 30 3
: 想得到以下結果
: dateDate exdae settle_price ID flag
: 1/2 1/15 13 1 13
: 1/3 1/15 13 1 13
: 1/4 1/15 11 1 13
: 1/7 1/15 15 1 15
: 1/8 1/15 16 1 16
: 1/9 1/15 19 1 19
: 1/10 1/15 14 2 14
: 1/11 1/15 17 2 17
: 1/12 1/15 17 2 17
: 1/13 1/15 13 2 17
: 1/14 1/15 27 2 27
: 1/15 1/15 15 3 15
: 1/16 2/16 19 3 19
: 1/17 2/16 16 3 19
: 1/18 2/16 29 3 29
: 1/19 2/16 29 3 29
: 1/20 2/16 30 3 30
: [程式範例]:有點類似每個月再尋找過前高資料
: 目前用RETAIN , 程式會重頭直行到尾 不會以每個ID範圍來執行一次。
: 我想要 1追一次 2 追一次 3 追一次。
: -----------------------------------------------------------------------------
動個小手腳就行了,每讀到一個新的id時讓flag清空
假設原始資料已經sort by id
data new;
retain flag;
set old;
by id;
if first.id then flag=settle_price;
else do;
if flag < SETTLE_PRICE then flag = SETTLE_PRICE;
end;
run;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.243.5.2