全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3899 9
2012-02-21
悬赏 1 个论坛币 未解决
libname ch7 'f:\data_model\book_data\chapt7';
proc sort data=ch7.smooth;by cid month;run;
data smooth;
set ch7.smooth;
by cid;
array lags(12);
lags(1)=lag(balance);
do i=2 to 12;
    lags(i)=lag(lags(i-1));
    end;
do j=12 to 2 by -1;
if j gt cns then lags(j)=.;
  put j=;
end;
if first.cid then do
       cns=0;
       do i=1 to 12;lags(i)=.;
       end;
    end;
cns+1;
mean6=mean(of lags1-lags6);
mean12=mean(of lags1 - lags12);
/*drop i j;*/
run;

这段代码求移动平均,我没完全看懂,哪位大侠能解释下在PDV中怎样运行的?

if语句为什么不能放到前面,第二个do语句是怎么运行的?谢谢各位?




二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-21 13:36:06
呵呵,提供另一个实现方法,不知道会不会好理解点。。。
复制代码
二维码

扫码加我 拉你入群

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

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

2012-2-21 16:40:18
学习了
二维码

扫码加我 拉你入群

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

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

2012-2-22 05:08:27
这个程序有点问题。每个cid的最后一个观测无法进入移动平均数的计算。也就是说,MEANS6给出的是该观测之前六个数的均值(如果之前具备6个观测的话)。京剧
二维码

扫码加我 拉你入群

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

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

2012-2-22 05:49:38
求移动平均最好的办法应该是用proc expand的mvave函数吧,可以试一下
二维码

扫码加我 拉你入群

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

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

2012-2-24 23:20:48
可~乐 发表于 2012-2-21 13:36
呵呵,提供另一个实现方法,不知道会不会好理解点。。。
你好!首先感谢你的这段代码!原代码用的数据见附件:
smooth.txt
大小:(2.58 KB)

 马上下载


你可以试试!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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