全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1508 3
2009-12-27
假如我有一个数据组,是1号组到5号组的实验数据,i是分组变量(1-5),需要对每一组数据单独进行回归分析,代码怎么写啊??我是刚刚接触sas对它还不熟悉,应该是使用循环控制语句来写,因为实际我的数据不止5组有1百多组,不可能一个一个搞,谢谢了!!!
假如数据是这个样子的:
DATA data;
INPUT index y x;
DATALINES;
1 100 400
1 120 380
1 351 684
2 454 243
2 34  3434
3 343 3434
... ...
RUN;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-12-27 18:53:13
写一个循环就好了

DATA data;
INPUT index y x;
DATALINES;
1 100 400
1 120 380
1 351 684
2 454 243
2 334 343
2 343 343
;
RUN;
%macro a;
%do i=1 %to 2;
proc reg data=data(where=(index=&i));
model y=x;
run;
%end;
%mend;
%a;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-12-27 22:50:40
1# a2zhou

"应该是使用循环控制语句来写,因为实际我的数据不止5组有1百多组,不可能一个一个搞,谢谢了!!!"

In this case you don't need any loops, instead using the "by statement in the proc reg" as in following example.


***use by statement in proc reg will have a regression eq for each by level;
***it will run much faster than macro approach as otherone proposed;
***generated data with 5 group;

data tmp;
  do i=1 to 1000;
     index=ceil(ranuni(12345)*5);   
     x=rannor(12345);
     y=1+2*x+rannor(12345);
     output;
  end;
drop i;
run;

proc sort data=tmp; by index;
run;

proc reg data=tmp;
by index;
model y=x;
run;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-1-12 11:17:53
谢谢啦,我看了一下基础的sas的书,用by 就解决了,谢谢了。
这种base东西也只有看书才能找到了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群