SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 655|回复: 3
打印 上一主题 下一主题

设置相对值

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-1-17 22:41:32 | 只看该作者

设置相对值

假设数据集date如下:
   code                 date                  standard       resdate
red                     20040102           20040106
red                     20040105           20040106                 
red                     20040106           20040106              
red                     20040107           20040106
green                 20050315            20050318
green                 20050318            20050318
green                 20050319           20050318
green                 20050320            20050318
yellow                 20060416           20060420
yellow                 20060418            20060420
yellow                 20060419           20060420
yellow                 20060420           20060420
yellow                 20060421           20060420

求: 以code分组,分为三组,每组中以date=standerd的观测为基准,它的resdate的值为0,然后向上的观测resdate值依次减1,向下的观测resdate值依次加1。例如上面的数据集经过这样的处理后应为:
code                 date                  standard       resdate
red                     20040102           20040106          -2
red                     20040105           20040106          -1      
red                     20040106           20040106          0     
red                     20040107           20040106          1
green                 20050315            20050318         -1
green                 20050318            20050318         0
green                 20050319           20050318         1
green                 20050320            20050318        2
yellow                 20060416           20060420          -3
yellow                 20060418            20060420         -2
yellow                 20060419           20060420          -1  
yellow                 20060420           20060420         0
yellow                 20060421           20060420        1

如何实现这种处理呢?先谢谢各位大侠了!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-1-19 12:52:46 | 只看该作者

Re: 设置相对值

参考贴如下:
[url:3up7lwhd]http://www.mysas.net/forum/viewtopic.php?f=4&t=3844&p=12441&hilit=byes#p12441[/url:3up7lwhd]
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
板凳
发表于 2009-1-20 14:30:06 | 只看该作者

Re: 设置相对值

-我的苯办法,仅供参考……
-------
data test;
input code $ date $ standard $;
cards;
red 20040102 20040106
red 20040105 20040106
red 20040106 20040106
red 20040107 20040106
green 20050315 20050318
green 20050318 20050318
green 20050319 20050318
green 20050320 20050318
yellow 20060416 20060420
yellow 20060418 20060420
yellow 20060419 20060420
yellow 20060420 20060420
yellow 20060421 20060420
;

data test;
set test;
n1=_n_;
if date=standard then n2=_n_;
else n2=0;
run;  

proc sql noprint;
create table test(drop=n1 n2) as select *, n1-max(n2) as  resdate
from test
group by code;
quit;
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
地板
发表于 2009-1-20 14:33:06 | 只看该作者

Re: 设置相对值

要保持原来数据排序的话,sql里面再加一个
order by n1
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 07:07 , Processed in 0.081654 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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