全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2079 4
2016-03-03
悬赏 20 个论坛币 未解决
我的问题如下:

对于第1条记录希望生成t1=2015/01/01加上1个月得到2015/02/01, t2=加上2个月得到2015/03/01,以此类推生成t3,t4
对于第2条记录则希望生成t1,t2,t3,t4,t5,生成的变量数量依赖于months所对应的值。
对于第3条记录则希望生成t1,t2,t3,t4,t5,t6



                time         months      
1         2015/01/01       4
2         2015/02/04       5
3         2015/02/07       6
……          ……              ……

应该怎样编制程序呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2016-3-3 14:28:59
复制代码
二维码

扫码加我 拉你入群

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

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

2016-3-3 17:17:12
我抛砖引玉,用个笨办法:
data a;
        id=1;time=mdy(1,1,2015);months=4;output;
        id=2;time=mdy(2,4,2015);months=5;output;
        id=3;time=mdy(7,7,2015);months=6;output;
        format time yymmdd10.;
run;

data b;
        set a;
        do i=1 to months;
                if month(time)+i<=12 then time1=mdy(month(time)+i,day(time),year(time));
                else time1=mdy(month(time)+i-12,day(time),year(time)+1);
                output;
        end;
        format time1 yymmdd10.;
run;
proc sort data=b;
        by id time months;
run;
proc transpose data=b out=c prefix=t;
        by id time months;
        var time1;
run;
二维码

扫码加我 拉你入群

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

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

2016-3-3 20:47:44
假设你的档案命名为a
且month 以及是日期格式
就用下面这个方法
array也许可以 但是我不熟

%macro a;
data a;
   set a;
   %do i=1 %to 100;
       t&i=INTNX('MONTH',time,&i,'same');
         format t&i yymmddn8.;
       if &i>month then t&i=.;
   %end;
run;
%mend;
%a;
二维码

扫码加我 拉你入群

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

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

2016-3-4 10:20:58
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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