Re: [程式] SAS 直轉橫 proc transpose

看板Statistics作者 (keep going!)時間15年前 (2010/09/03 23:18), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《wlsherica (CrevetteStudio)》之銘言: : [軟體程式類別]:SAS : [程式問題]:資料處理 : [軟體熟悉度]:高(1年以上) : [問題敘述]: : 原始資料↓其中ID有重複出現 : ID NO IN_date OUT_date START : 10011576 0032 2009/9/26 2009/10/8 . : 10019076 0053 2009/7/7 2009/7/18 . : 10034358 0004 2009/9/22 2009/9/22 2009/10/20 : 10034358 0005 2009/9/22 2009/11/10 2009/10/21 : 現在想將資料轉成橫向 : ID NO1 NO2 IN_date1 IN_date2 OUT_date1 OUT_date2 START1 START2 : 10011576 0032 . 2009/9/26 . 2009/10/8 . . . : 10019076 0053 . 2009/7/7 . 2009/7/18 . . . : 10034358 0004 0005 2009/9/22 2009/9/22 2009/9/22 2009/11/10 2009/10/20 2009/10/21 : 每個ID只有一行,因此資料就算是往右邊展開,沒有對應到的就是missing : 我想array應該可以作,因此想試試看proc transpose : 因為變數很多(包含no, in_date, out_date start),目前還沒有成功orz : (我只有成功處理單一變數orz) : 因此想請教板上的前輩們,謝謝 參考一下 資料 data first;format in_date $20. out_date $20. start $20.; input id no $ in_date $ out_date $ start $; cards; 10011576 0032 2009/9/26 2009/10/8 . 10019076 0053 2009/7/7 2009/7/18 . 10034358 0004 2009/9/22 2009/9/22 2009/10/20 10034358 0005 2009/9/22 2009/11/10 2009/10/21 ; run; 做法: proc sort data=first out=second nodupkey;by id;run; proc sql; create table third as select b.id as id,b.no as no1,a.no as no2, b.in_date as in_date1,a.in_date as in_date2, b.out_date as out_date1,a.out_date as out_date2, b.start as start1,a.start as start2 from first a right join second b on (a.id=b.id)and ((a.no^=b.no)|(a.in_date^=b.in_date)| (a.out_date^=b.out_date)|(a.start^=b.start)) order by id; quit; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.117.0.131 ※ 編輯: socery 來自: 59.117.0.131 (09/03 23:25)

09/03 23:34, , 1F
太好了正好在學SQL, 感謝您
09/03 23:34, 1F

09/03 23:38, , 2F
類似把原始變成兩個,挑選後再join一起
09/03 23:38, 2F

09/04 00:34, , 3F
看來我真的需要好好學SQL,太多東西要學,太感謝了
09/04 00:34, 3F
文章代碼(AID): #1CWH7RhF (Statistics)
文章代碼(AID): #1CWH7RhF (Statistics)