看板 Statistics 關於我們 聯絡資訊
※ 引述《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)
wlsherica:太好了正好在學SQL, 感謝您 09/03 23:34
wlsherica:類似把原始變成兩個,挑選後再join一起 09/03 23:38
maumausam:看來我真的需要好好學SQL,太多東西要學,太感謝了 09/04 00:34