|
7#

楼主 |
发表于 2011-5-22 09:39:05
|
只看该作者
Re: 如何处理某一变量下的观测值的差
[quote:2ozim3cg]Re: 如何处理某一变量下的观测值的差[/quote:2ozim3cg]
这问题还可通过 [color=#FF0000:2ozim3cg]dif [/color:2ozim3cg]函数编译宏来实现每两条观测值之差,代码如下:
[code:2ozim3cg]
%macro yours(i,j); /*表示第i条与第j条观测值之差*/
%let max=%sysfunc(max(&i.,&j.));
%let min=%sysfunc(min(&i.,&j.));
%let n=%eval(&max.-&min.);
data _null_;
set a;
if _n_<=&max. then do;
z=dif&n.(x);
if &i.> &j. then result=z;
else result=(-1)*z;
if _n_=&max. then put result=;
end;
run;
%mend yours;
%yours(1,2); /*如第一条和第二条观测的显示结果为:result=-41*/[/code:2ozim3cg]
可以根据个人实际情况把上边的代码进行优化 <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) --> |
|