Re: [問題] SAS 將一串資料按照數值大小分為十組

看板Statistics作者 ( )時間15年前 (2011/03/15 21:19), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串6/7 (看更多)
不好意思,我可能沒說得很清楚 但我結合j大與s大的方式 大概想出來要怎樣處理了 data report; input stkno a1 a2 a3; cards; 5738 57 12 96 6374 56 73 35 7384 36 46 37 9999 . 33 23 8888 . . 25 6666 . 13 . ; run; %macro test(num_a); %do i=1 %to &num_a; data temp&i (keep=stkno a&i); set report; if a&i=. then delete; run; proc sort data=temp&i; by descending a&i; run; PROC RANK DATA=temp&i out = temp&i GROUPS=3 DESCENDING; VAR a&i; RUN; %do j=0 %to 2; data a&i&j (keep=stkno); set temp&i; if a&i=&j; run; %end; %end; %mend; %test(num_a=3); /* number of a */ 我的目的是要將每個欄位的資料分成十組,然後只留下該組的股票代號 例如 將以下資料分為三組並分別存成一個檔案 stkno a1 1111 44 2222 33 3333 11 4444 77 5555 88 6666 08 結果要有以下三個檔案 data 1 stkno 5555 4444 data 2 stkno 1111 2222 data 3 stkno 3333 6666 所以說~~~以上程式碼應該是可以做到的~ 如果有問題再一起討論吧!!! 謝謝各位的關心 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.42.149 ※ 編輯: frank1206 來自: 140.122.42.149 (03/15 21:23)

03/15 22:59, , 1F
提醒,如果遇到等直的數據時,sas預設是採用平均名次,
03/15 22:59, 1F

03/15 23:00, , 2F
例如,某數值介於第6與第7組間,它的rank值則會秀6.5,
03/15 23:00, 2F

03/15 23:02, , 3F
解決方法是設 TIES=HIGH 或 TIES=LOW
03/15 23:02, 3F

03/16 00:43, , 4F
謝謝!!!我會再加入這個條件的
03/16 00:43, 4F

03/16 01:18, , 5F
這做法你每組裡面資料的筆數好像就沒有規則可言
03/16 01:18, 5F
文章代碼(AID): #1DVsTrhf (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1DVsTrhf (Statistics)