全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3010 16
2015-09-24
悬赏 100 个论坛币 已解决
各位大大,小弟遇见一个问题,如题。希望在data 里生成一个变量然后直接在data step里用看下面程序,希望把j做成一个macro变量。这样就可以写成 var&j.=pay_date了。谢谢!


data g;

input indexs 1. pay_dt date9.  due_dt date9.;
format pay_dt date9.  due_dt date9.;
datalines;
1 12Dec14 11Dec14
2 14Jan15 11Jan15
3 17Mar15 11Feb15
4 17Apr15 11Mar15
5 13May15 11Apr15
6          11May15
7          11Jun15
8          11Jul15
9          11Aug15
;
run;

proc sql noprint;
   select max(indexs) into :max_index
from g;
quit;


%macro varlist(n);
%do i=1 %to &n;
format var&i. date9.;
   retain var&i.;
%end;
%mend;

%macro t;
data test;
  set g;
retain j;
  %varlist(&max_index);
      if not missing(pay_dt) then do;
        days_diff=intck('days',due_dt,pay_dt);
        if days_diff>3 then do;
          j+1;
          if j=1 then var1=pay_dt;
          if j=2 then var2=pay_dt;
          if j=3 then var3=pay_dt;
          if j=4 then var4=pay_dt;
          if j=5 then var5=pay_dt;
          if j=6 then var6=pay_dt;
          if j=7 then var7=pay_dt;
          if j=8 then var8=pay_dt;
          if j=9 then var9=pay_dt;
        end;
    end;
run;
                     
%mend;

%t;

最佳答案

mingfeng07 查看完整内容

给你举个简单例子:我这个代码中var&i.可以被赋值,所以你可以检查一下是否是你的代码其它地方出什么问题了。
二维码

扫码加我 拉你入群

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

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

全部回复
2015-9-24 13:21:50
peterpan_aus 发表于 2015-9-24 15:37
%macro fffff;
data test1;
  set g;
给你举个简单例子:
复制代码
我这个代码中var&i.可以被赋值,所以你可以检查一下是否是你的代码其它地方出什么问题了。
二维码

扫码加我 拉你入群

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

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

2015-9-24 13:55:30
没看明白
二维码

扫码加我 拉你入群

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

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

2015-9-24 14:20:18
cranewind 发表于 2015-9-24 13:55
没看明白
就是怎么把J变成一个macro,然后直接可以var&j.这样用。不好意思我表达能力有点差
二维码

扫码加我 拉你入群

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

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

2015-9-24 14:31:44
直接加个 do j=1 to 9不可以吗?
二维码

扫码加我 拉你入群

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

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

2015-9-24 15:04:53
统计2008陈利 发表于 2015-9-24 14:31
直接加个 do j=1 to 9不可以吗?
我需要 var&j.呀
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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