作者frank1206 ( )
看板Statistics
標題Re: [問題] SAS 將一串資料按照數值大小分為十組
時間Tue Mar 15 21:19:47 2011
不好意思,我可能沒說得很清楚
但我結合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)
1F:推 jasonlian:提醒,如果遇到等直的數據時,sas預設是採用平均名次, 03/15 22:59
2F:→ jasonlian:例如,某數值介於第6與第7組間,它的rank值則會秀6.5, 03/15 23:00
3F:→ jasonlian:解決方法是設 TIES=HIGH 或 TIES=LOW 03/15 23:02
4F:→ frank1206:謝謝!!!我會再加入這個條件的 03/16 00:43
5F:→ socery:這做法你每組裡面資料的筆數好像就沒有規則可言 03/16 01:18