[程式] SAS 同ID中設定最小值為reference

看板Statistics作者 (肥羊)時間12年前 (2013/10/27 23:43), 編輯推噓0(0016)
留言16則, 2人參與, 最新討論串1/1
------------------------------------------------------------------------ [軟體程式類別]:SAS [程式問題]:資料整理 [軟體熟悉度]: 中(3個月到1年) [問題敘述]: 1. 如何在同ID中將他的最小值設為reference 資料形式: NO ID checkyear value 1 A001 2008 3 <---A001中2008年最早 2 A001 2009 5 3 A001 2011 8 4 A002 2012 5 <---A002中2012年最早 5 A003 2005 1 <---A003中2005年最早 6 A003 2009 7 7 A003 2010 8 8 A003 2012 10 因此想將NO1.4.5令其t=0,請問該如何用SAS code把這些值選出來? 2. 如何轉置多個VAR至同一列上? 原資料形式: NO ID checkyear aa bb 1 A001 2008 3 200 2 A001 2009 5 230 3 A001 2010 8 240 4 A002 2010 5 250 5 A003 2008 1 270 6 A003 2010 8 179 希望得到的格式: ID 2008_aa 2008_bb 2009_aa 2009_bb 2010_aa 2010_bb A001 3 200 5 230 8 240 A002 5 250 A003 1 270 8 179 如果用 PROC TRANSPOSE DATA=data OUT=data_1(DROP=_name_); VAR aa bb; BY id; ID checkyear;RUN; 會變成 ID aa bb A001 3 A001 200 ... 請問要如何得到想要的格式呢? 謝謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.102.6

10/28 00:49, , 1F
第一題我用了IF FIRST.work_no THEN...
10/28 00:49, 1F

10/28 00:49, , 2F
第一題已解決,謝謝大家
10/28 00:49, 2F

10/28 11:26, , 3F
問題2大概如下:
10/28 11:26, 3F

10/28 11:26, , 4F
Data xxx;set xxx;
10/28 11:26, 4F

10/28 11:27, , 5F
retain 2008_aa 2008_bb 2009_aa 2009_bb 2010_aa
10/28 11:27, 5F

10/28 11:28, , 6F
2010_bb;
10/28 11:28, 6F

10/28 11:28, , 7F
by ID;
10/28 11:28, 7F

10/28 11:30, , 8F
if checkyear=2008 then do;2008_aa=aa;2008_bb=bb;end;
10/28 11:30, 8F

10/28 11:31, , 9F
else if checkyear=2009 then do;2009_aa=aa;2009_bb=bb;
10/28 11:31, 9F

10/28 11:31, , 10F
end;
10/28 11:31, 10F

10/28 11:32, , 11F
else if checkyear=2010 then do;2010_aa=aa;2010_bb=bb;
10/28 11:32, 11F

10/28 11:32, , 12F
end;
10/28 11:32, 12F

10/28 11:33, , 13F
if last.ID then output;
10/28 11:33, 13F

10/28 11:33, , 14F
run;
10/28 11:33, 14F

10/28 11:35, , 15F
請在by ID;後面加上這幾句:
10/28 11:35, 15F

10/28 11:36, , 16F
if first.ID then do; 2008_aa=.; 2008_bb=.; ...;end;
10/28 11:36, 16F
文章代碼(AID): #1IRJI7l6 (Statistics)