看板 Statistics 關於我們 聯絡資訊
※ 引述《lsshno1 (朝右邊鋒邁進)》之銘言: : : proc sql; : : create table a as select : : a,max(b) as b,c ,d : : from yourdata : : group by a,c,d; /*將 a c d 看成組別分類*/ : : quit; : 我剛剛在想,如果多加入一筆資料的話: : a b c d : 4 9 0756 0751 : 按照原作者的想法,應該選到下列這些資料: : a b c d : 1 2 0800 0759 : . : . : 3 5 0756 0750 : 4 8 0756 0751 : 如果按照之前各位的寫法: group by a,c,d (sort,univarate,sql) : 會選到 : a b c d : 1 2 0800 0759 : . : . : . : 3 5 0756 0750 : 3 8 0756 0751 : 4 9 0756 0751 : 這樣似乎跟原作者想要的不同. : 到現在還是沒有想出來怎麼寫, : 謝謝各位了喔! data aa; input a b c d; cards; 1 1 0800 0759 1 2 0800 0759 1 3 0802 0800 2 4 0750 0745 3 5 0755 0749 3 6 0756 0750 3 7 0756 0751 3 8 0756 0751 4 9 0756 0751 ; proc sort data=aa; by c d; run; 第一次想到的是兩次 univariate 在合併 proc univariate data=aa noprint; by c d ; var a; output out=a1 max=a ; proc univariate data=aa noprint; by c d ; var b; output out=a2 max=b ; run; data cc; merge a1 a2; by c d; run; proc sort data=cc; by a b; run; 不過後來又想到,這只有在 a b 都是遞增的條件下可以用 max= 如果一個遞增,另一個是亂排的,有可能找不出通式 之後試了如果直接用DATA是不是做的出來 過程是瞎貓碰到死耗子寫出來的,結果看起來是對的 不過不保證會不會有什麼例外 data ee; set aa; by c d; if last.c or last.d then output ; run; proc sort data=ee; by a b; run; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.172.239.38 ※ 編輯: MmmRrrrX 來自: 218.172.239.38 (01/08 01:12)
lsshno1:thank you! 01/08 02:33