全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3423 6
2017-01-10
请教各位了,我的数据data有3个变量,a,b,c均为日期型。想做下面这样的赋值,请问有没有循环语句的方法呢?
我只知道这样的笨方法,循环大概要用到do;i+1;之类的语句吧?但是不知道怎么去写了
data data1;
set data;
if a<=b<a+1 then d=1;
  else if a+1<=b<a+1 then d=2;
  else if a+2<=b<a+2 then d=3;
  else if a+3<=b<a+3 then d=4;
  else if a+4<=b<a+4 then d=5;
  else if a+5<=b<a+5 then d=6;
  else if a+6<=b<a+6 then d=7;
  else if a+7<=b<a+7 then d=8;
  else if a+8<=b<a+8 then d=9;
  else if a+9<=b<a+9 then d=10;
  else if a+10<=b<a+10 then d=11;
  else if a+11<=b<c then d=12;    /*这里是小于c*/
run;




二维码

扫码加我 拉你入群

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

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

全部回复
2017-1-10 14:39:12
data z;
        input a b c;
        cards;
        1 2 3
        4 9 6
        7 11 9
        ;
run;

data z1;
        set z;
        if a <= b < a+1 then d=1;
        do i = 1 to 10;
                if a+i <= b < a+i+1 then d=i+1;
        end;
        if a+11 <= b < c then d=12;
run;
二维码

扫码加我 拉你入群

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

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

2017-1-10 14:39:26
直接d=b-a+1不就行了吗?
data a1;
set a;
d=b-a+1;
run;
二维码

扫码加我 拉你入群

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

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

2017-1-10 14:45:55
我用了
do i=1 to 30 ;
if a<=b<c+i then d=i;
end;
这样的语句,但是不对,不知道应该怎么做了
二维码

扫码加我 拉你入群

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

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

2017-1-10 14:47:47
@zhanjie.wang
这样不对
d只能是从1开始的数值
二维码

扫码加我 拉你入群

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

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

2017-1-10 15:06:52
@G狼顾之鬼
谢谢你,为什么不直接写:
data z1;
        set z;
do i = 1 to 10;
if a <= b < a+1 then d=i;
i+1;
end;
if a+11 <= b < c then d=12;
run;
这样写为什么不可以呢
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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