作者frank1206 ( )
看板Statistics
标题Re: [问题] SAS 将一串资料按照数值大小分为十组
时间Tue Mar 15 01:54:42 2011
: 我不会刚刚用的指令,
: 所以我的作法有点笨,不过应该可以用
: 想法是:一次建立一个新的资料夹 只包含 stkno 跟 a1 或 a2 或 a3
: 接着对变数做排序与编号,以stkno,a1来说
: stkno a1 id
: 1101 12 1
: 3049 12 2
: 2330 15 3
: 1102 23 4
: .
: 2498 98 10
: 接着直接用sql选id=1的stkno,id=2的stkno etc..
: data report;
: input stkno a1 a2 a3;
: cards;
: 5738 57 12 96
: 6374 56 73 35
: 7384 36 46 37
: ;
: run;
: %macro test(var);
: data temp;
: set report;
: keep stkno &var;
: run;
: proc sort data=temp;
: by &var;
: run;
: data temp;
: set temp;
: id=_n_;
: run;
: %do i=1 %to 10;
: proc sql;
: create table &var&i as
: select stkno
: from temp
: having id=&i;
: quit;
: %end;
: %mend;
: %test(var=a1);
: 可能有点笨,大家可以讨论一下.
: 谢谢!
l大您好
实际上的资料应该有 stkno a1-a496 共497栏,每栏有约700个数值
有一点我忘记说明清楚,因为每栏可能存在遗漏值。
所以在分组的时候也必须考虑到遗漏值
这部分应该算好处理的,设个条件去掉就好。
但麻烦的是要如何让sas自行判断,分十组的时候一组有几家公司代码。
例如a1可能有700笔资料,但a2可能就只有690笔资料。
这样每组的家数就会受到影响,因此目前还在想方法解决@@"
另外对於ntile的函数,会不会因为sas版本比较就而受到影响?
ntile函数好像是 sql server 2005才有的,这样我使用sas 9.1.2会不能用吗?
问题有点多,请见谅~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.117.177.102
1F:推 lsshno1:你说 %to i=1 %to 10; 这边10未定吗? 03/15 02:22
2F:推 lsshno1:可以这样试试看: proc sql;select count(*) into:n 03/15 02:24
3F:→ lsshno1:from temp;quit; 接着loop这边改成这样子: 03/15 02:25
4F:→ lsshno1:%to i=1 %to &n; 这样应该可以 03/15 02:25
5F:推 MmmRrrrX:请教一个问题,分十组时栏位不能被10整除时,10组里资料 03/15 12:11
6F:→ MmmRrrrX:笔数不会相同,这部分你希望依什麽方式区别别每组笔数? 03/15 12:13