全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1374 2
2015-09-25
悬赏 100 个论坛币 已解决
我现在要用proc sql 指令批量处理数据,BAS01,BAS02, BAS03...... BAS85 (可见数据有顺序) 。生成的数据叫out01, out02,out03.....out85。

我现在的指令是正确的,如下
复制代码

但是我这里想用 %Macro 和 %Do 自动处理数据然后生成新的数据, 我的code是:
复制代码


但是这个code 提示 ‘ as’  那里有错误。 在一般情况下,proc sql 里的where, as, from 等指令都会被加深为蓝色, 可是我的code下面这些都是普通的黑色字体。 实在搞不懂那里出错了。

请大神们指教。

最佳答案

Enginx 查看完整内容

%macro input_data(inname,outname); %do i=1 %to 85; data _null_; if &i=10 then call symput("k","&i."); run; proc sql; create table &outname.&k. as select h._ric, h.date_l_, h.rbas, h.basdp, ( select std(s.rbas) from &inname.&k. s where h.gdate between s.gdate-15 and s.gdate+15) as stddev_rbas, ( select mean(s.rbas) from &inname.&k. s wh ...
二维码

扫码加我 拉你入群

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

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

全部回复
2015-9-25 19:20:02


%macro input_data(inname,outname);
%do i=1 %to 85;

data _null_;
if &i<10 then call symput("k","0"||"&i.");
else if &i>=10  then call symput("k","&i.");
run;

proc sql;
create table  &outname.&k.  as
select
  h._ric,
  h.date_l_,
  h.rbas,
  h.basdp,
  ( select std(s.rbas)
    from  &inname.&k. s
    where h.gdate between s.gdate-15 and s.gdate+15) as stddev_rbas,
  ( select mean(s.rbas)
    from  &inname.&k. s
    where h.gdate between s.gdate-15 and s.gdate+15) as mean_rbas,
( select std(s.basdp)
    from  &inname.&k. s
    where h.gdate between s.gdate-15 and s.gdate+15) as stddev_basdp,
  ( select mean(s.basdp)
    from  &inname.&k. s
    where h.gdate between s.gdate-15 and s.gdate+15) as mean_basdp
from  &inname.&k. h;

quit;

%end;
%mend;

%input_data(BAS,out);
二维码

扫码加我 拉你入群

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

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

2015-9-25 19:59:34
先看看。{:2_26:}
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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