全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1754 4
2011-03-17
原帖位置如下:http://www.pinggu.org/bbs/viewthread.php?tid=889979&page=1#pid6792399

data raw;
        input date yymmdd8. week;
        format date yymmdd10.;
datalines;
20100628 1
20100629 1
20100630 1
20100701 1
20100702 1
20100705 2
20100706 2
20100707 2
20100708 2
20100709 2
20100712 3
20100713 3
20100714 3
;

data out;
        _temp=0;
        do _n_=1 by 1 until(last.week);
                set raw ;
                by week;
                _temp+1;
        end;
         if _temp=5 then output;
        do _n_=1 to _n_;
                set raw;
                if _temp<5 then output;
        end;
run;


问题一:
上面这段程序是第一种方法,请问第一个循环语句do _n_=1 by 1 until(last.week);中 “by 1”的作用是什么?


如果by 1 的意思是每次循环增加一的话,把by 1去掉结果应该不会变,但是把by 1去掉之后运行程序就得不到想要的结果了。


问题二:
如果将第二个data步修改成如下
data out;
        _temp=0;
        do _n_=1 by 1 until(last.week);
                set raw ;
                by week;
                _temp=_temp+1;
        end;
run;
即删掉第二个循环,只保留第一个循环,得到的运行成果如下,即只输出了每周最后一天的观测,我想问的是为什么其他天数的观测不会被输出,set raw不是应该读入了所有的观测嘛?其实我搞不明白的是第一个循环里面运行的顺序,希望哪位高手能够解答一下。

temp    data      week
5       2010/7/2    1
5       2010/7/9    2
3       2010/7/14  3
二维码

扫码加我 拉你入群

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

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

全部回复
2011-3-18 21:08:42
同求高手回答。。。。。
二维码

扫码加我 拉你入群

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

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

2011-3-19 09:04:53
木有人回答啊...
二维码

扫码加我 拉你入群

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

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

2011-3-21 17:28:34
高手解答一下吧。。。。。。。。。。。
二维码

扫码加我 拉你入群

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

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

2011-3-21 17:28:55
楼主悬赏吧。。。。。。。。。。。。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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