SAS中文论坛

标题: 标准差怎么求 [打印本页]

作者: shiyiming    时间: 2009-11-9 00:55
标题: 标准差怎么求
有一个变量x,一共1000行,1000个数据,我想对每一个数据都和其前面30个数据(x lag(x) ``````lag30(x))求一个标准差,这样得到1000个标准差,请问该如何实现,STD无法对列进行处理,是否应该转置呢,该如何编写程序,请指教!
作者: shiyiming    时间: 2009-11-9 01:30
标题: Re: 标准差怎么求
何谓前面?如果是第一个数据怎么办?我想此问题不难,只要定义准确就有办法的。
作者: shiyiming    时间: 2009-11-9 02:40
标题: Re: 标准差怎么求
[code:3u7aa6fp]data NewData;
        set UrData;*your dataset contains a variable x;
        array x_{31} x0-x30;*assign x and its lag values;
        x0 =x;
        do i =1 to 30;
            x_[i+1] =lag(x_[i]);
        end;
        std =std(of x0-x30);
   drop x0-x30 i;
run;[/code:3u7aa6fp]
作者: shiyiming    时间: 2009-11-9 12:36
标题: Re: 标准差怎么求
谢谢,我的数据有超多,这样运算很慢,我想改成每30个数据就运算一下STD,第30个数据就是下一个数组的1,比如1 2 3 ·······30 2 3 ·······30 2······· ,最后剩下的数据按实际的个数计算STD,请问该如何实现呢,谢谢!
作者: shiyiming    时间: 2009-11-9 12:57
标题: Re: 标准差怎么求
大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个!
作者: shiyiming    时间: 2009-11-9 21:50
标题: Re: 标准差怎么求
[quote:1jq4dwlb]大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个![/quote:1jq4dwlb]

他显然既不是印度人也不是基地组织成员。因为他的汉语带有80后的口音,[quote:1jq4dwlb]我的数据有超多。。。[/quote:1jq4dwlb]
作者: shiyiming    时间: 2009-11-9 22:24
标题: Re: 标准差怎么求
[code:1lpzc7zj]data _null_; set UrData end =endof;
        if endof then call symput('r', ifn(mod(_n_, 29), mod(_n_, 29)-2, 27));
run;
%let r =&r; %put &r;
data NewData;
   set UrData end =endof;*your dataset contains a variable x;
   array x_{30} x0-x29;*assign x and its lag values;
   x0 =x;
   do i =1 to 29; x_[i+1] =lag(x_[i]); end;
   if mod(_n_, 29) =1 then std =std(of x0-x29);
                else if endof then  std =std(of x0-x&r.);
   drop x0-x29 i;
run;[/code:1lpzc7zj]
作者: shiyiming    时间: 2009-11-10 12:39
标题: Re: 标准差怎么求
谢谢,请问在程序那一段能体现出每30个数据求一次,30个数据和下30个数据首尾相连这个特点??谢谢了




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2