作者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