全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1810 2
2010-04-21
data x;  /*数据集x的行数决定生成数据集的个数,生成数据集的名字用id表述*/
input c1$ c2$  id$;
cards;
q1 q2   dd
q3 q5   ww
q2 q6   ff
;run;

data y; /*数据集y行数决定了每个生成数据集中的观测个数*/
input  q1 q2 q3 q4 q5 q6;
cards;
2 3 4 5 8 9
1 2 3 4 5 6
;run;

具体算法为:数据集y每一行都按照这个式子算。
r=c1*3+c2*2;

/*例如本例需生成dd,ww,ff三个数据集,拿dd数据集来说,它里面是两个观测,具体是:*/

data dd;
r1=c1*3+c2*2=q1*3+q2*2=2*3+3*2=12;
r2=c1*3+c2*2=q1*3+q2*2=1*3+2*2=7;
;run;
ww,ff的情况类似

这里,x和y数据集已知,实际问题要复杂很多,大概是用宏代换吧?
那么如何生成dd,ww,ff三个数据集呢?
路过的大侠留意,多谢了
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-21 21:00:12
data x;
input c1$ c2$  id$@;
cards;
q1 q2   dd
q3 q5   ww
q2 q6   ff
;
run;
data y;
input  q1 q2 q3 q4 q5 q6@;
cards;
2 3 4 5 8 9
1 2 3 4 5 6
;
run;
proc sql noprint ;
select id into:id separated by "*" from x ;
select count(*) as count into:count from x;
quit;
%a;
%macro a;
%do i=1 %to &count.;
%let idname=%scan(&id,&i.,*);
%b(&idname.);
%end;
%mend a;
%macro b(idname);
data  &&idname.;
set x;
where id="&idname.";
run;
proc sql noprint;
select c1,c2 into:c1 ,:c2 from &&idname.;
create table n&&idname. as select &c1.,&c2. from y;
quit;
data &&idname;
set n&&idname.;
r=3*&c1.+2*&c2.;
run;
%mend b;
二维码

扫码加我 拉你入群

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

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

2010-4-21 21:08:32
思路不错,稍有点错,不过完全能够解决我的问题了,掌声和鲜花献给crackman同学~~
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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