SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 659|回复: 7
打印 上一主题 下一主题

如何处理某一变量下的观测值的差

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-4-11 15:28:35 | 只看该作者

如何处理某一变量下的观测值的差

假如有一个变量x,x下有5个观测,如何求解任意两个观测的差,比方说求第一个观测与第二个观测差,第3个与第5个观测的差。谢谢啦

X
11
52
37
42
17
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2011-4-11 16:36:04 | 只看该作者

Re: 如何处理某一变量下的观测值的差

test test
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-4-11 18:37:49 | 只看该作者

Re: 如何处理某一变量下的观测值的差

不好意思,您可以说的具体一些吗,最好附个程序,因为初学,不太明白,呵呵,谢谢啦!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-4-12 02:41:39 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-4-12 08:34:38 | 只看该作者

Re: 如何处理某一变量下的观测值的差

高人,太感谢了,真的是解决了一大难题呀呵呵
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2011-4-18 01:23:05 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
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:) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2011-5-23 20:04:12 | 只看该作者

Re: 如何处理某一变量下的观测值的差

感谢各位高人的指导,此问题已解决,谢谢大家了呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 13:21 , Processed in 0.135469 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表