作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS回圈问题?
时间Fri Dec 17 20:27:33 2010
其实并不用这麽复杂
如果你的资料是10000笔
你只是想要把资料前100笔跑一个 第二个100笔跑另外一个
那麽
data a;
set a;
order=int((_n_-1)/100);
run;
proc sort;by order;
run;
proc reg noprint outest=b tableout;
model y=x1-xn;
by order;
quit;
order会是0~99
那麽t b档案就有你需要的所有资料
而且结果不会输出到output
速度相对上会快上许多
也不需要有%macro的语法
※ 引述《liton (欧吉桑留学生)》之铭言:
: ※ 引述《tottier (透抽)》之铭言:
: : 我汇入的资料是10,000笔
: : 资料型态为第一组:1~100,第二组:101~200.....以此类推
: : 每100个为一组资料
: : 所以总共有1000组
: : 而每一组资料我要算一个p-value值
: : 所以我应该会得到1000个p-value值
: : 请问应该要怎麽写回圈
: 这个有点复杂 我讲的大概
: 首先你得先确定你要输出的参数的dataset
: SAS不同回归程式 输出的方式都不尽相同
: 最直接的是开ODS trace on; 可以参考以下这篇文章
: http://t3873229.blogspot.com/2008/12/ods.html
: 确定参数的dataset之後
: %macro OOXX;
: %do i=1 %to 100;
: ODS output 你查到的参数dataset=&if &i ne 1 %then para_tmp %else para;
: proc 跑回归
: data=&i (转成不同组的dataset)
: &if &i ne 1 %then %do;
: data para;
: set para para_tmp;
: proc dataset;
: delete para_tmp;
: %end;
: %macro ooxx;
: %ooxx;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.240.66
1F:→ tew:其他的语法 也可以尽量找到相似的功能 12/17 20:28
2F:→ liton:proc reg data=?? 12/17 20:54
3F:→ liton:自己手动跑100次?? 里面有自己跑100次? 12/17 20:57
4F:→ liton:outest里面有p-value?? 另外跑100次每次都是产出b不就盖掉? 12/17 20:59
5F:→ liton:oh..看懂了~~ 12/17 21:08
6F:→ tew:好像很少人知道tableout的功能?? 12/17 21:22
7F:→ liton:SAS各种统计指令的产出太多种了 trace on当场茶就行了 12/17 21:49
8F:→ liton:prog logistic好像就不能用tableout 12/17 21:57
9F:→ tew:其实分组跑资料不用急着想用巨集 我会先想有没有办法利用by 12/18 07:38
10F:→ tew:来跑 这样工作就一次完成 也不用产生过多的中间档案 12/18 07:39
11F:→ tew:确实只有reg才有tableout的功能 xdd 12/18 07:40
12F:→ liton:我前几天才写完一个 不过我是要跑几十个变数 变数是横放 12/18 16:09
13F:→ liton:而且同时跑Logistic npar1way means兼输出分布图 懒得想 12/18 16:12