0
我有多個日期每IID
,我期待找到最大(也許最小的路)在組內只有如果另一個變量不見了。看看下面的測試數據:SAS proc sql查找最小/最大隻在組內丟失/非丟失
data test;
informat EFF_DATE END_DATE date9.;
length IID $12 EFF_DATE END_DATE 8;
input IID $ EFF_DATE END_DATE;
format EFF_DATE END_DATE date9.;
datalines;
A 11MAY15 .
A 12SEP13 01JAN15
A 13DEC12 .
B 25AUG14 .
B 13JUN17 01JAN15
B 03NOV13 .
;
run;
我的計劃是建立過下面的代碼通過IID
計算最大EFF_DATE
,但只有當END_DATE
丟失,我無法弄清楚如何在sql
添加此邏輯。
proc sql noprint;
create table test_fill as
select *,
max(EFF_DATE) /* add something here? */ as MOST_RECENT_EFF_DATE format=date9.
from test group by IID;
quit;
下面顯示了所需的輸出:
IID EFF_DATE END_DATE MOST_RECENT_EFF_DATE
A 11MAY15 . 11MAY15
A 12SEP13 01JAN15 11MAY15
A 13DEC12 . 11MAY15
B 25AUG14 . 25AUG14
B 13JUN17 01JAN15 25AUG14
B 03NOV13 . 25AUG14
對於IID = B,即使13JUN17是最大日期,因爲END_DATE是我們不能接受非缺失,所以我需要採取下最高的日期。我敢肯定,我可以編寫一堆數據步驟併合並回來,但如果可能的話,我想嘗試在sql
之間敲出來。
謝謝@Joe - 正是我在找什麼。嵌套的case when語句對我所有的邏輯都是有用的! – Foxer