SAS中文论坛
标题:
如何处理某一变量下的观测值的差
[打印本页]
作者:
shiyiming
时间:
2011-4-11 15:28
标题:
如何处理某一变量下的观测值的差
假如有一个变量x,x下有5个观测,如何求解任意两个观测的差,比方说求第一个观测与第二个观测差,第3个与第5个观测的差。谢谢啦
X
11
52
37
42
17
作者:
Qiong
时间:
2011-4-11 16:36
标题:
Re: 如何处理某一变量下的观测值的差
test test
作者:
shiyiming
时间:
2011-4-11 18:37
标题:
Re: 如何处理某一变量下的观测值的差
不好意思,您可以说的具体一些吗,最好附个程序,因为初学,不太明白,呵呵,谢谢啦!
作者:
shiyiming
时间:
2011-4-12 02:41
标题:
Re: 如何处理某一变量下的观测值的差
[code:312x3v67]data have;
input var1;
cards;
11
52
37
42
17
;
run;
data _tmp;
set have;
idx = _n_;
run;
proc sql;
create table want as
select a.var1 as a, b.var1 as b, (a.var1 - b.var1) as difference
from _tmp as a, _tmp as b
where a.idx ne b.idx
;quit;[/code:312x3v67]
作者:
shiyiming
时间:
2011-4-12 08:34
标题:
Re: 如何处理某一变量下的观测值的差
高人,太感谢了,真的是解决了一大难题呀呵呵
作者:
shiyiming
时间:
2011-4-18 01:23
标题:
Re: 如何处理某一变量下的观测值的差
[code:3ahhcz10]proc iml;
X={11,52,37,42,17};
i=3;j=5;
d=X[i]-X[j];
print d;
quit;[/code:3ahhcz10]
作者:
shiyiming
时间:
2011-5-22 09:39
标题:
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:) -->
作者:
shiyiming
时间:
2011-5-23 20:04
标题:
Re: 如何处理某一变量下的观测值的差
感谢各位高人的指导,此问题已解决,谢谢大家了呵呵
欢迎光临 SAS中文论坛 (http://mysas.net/forum/)
Powered by Discuz! X3.2