SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1237|回复: 9
打印 上一主题 下一主题

求教一个编程小问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-4-17 02:42:28 | 只看该作者

求教一个编程小问题

有一个数据库格式如下
id     time     m
1      5         6
1      12       8
1      17       8
2      3         3
2      8         2
2      10       1
……
如何把每个id中time最大的观测值提取出来
(即是:id为1选中time17那个值;id为2的选中time为10的)
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-4-17 03:47:35 | 只看该作者
proc sort data = work.a out = work.b;
by id;
run;
proc means data = work.b max;
var time;
class id;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-4-17 04:39:15 | 只看该作者
[code:24017]proc sql;
create table maxtime as
select id, max(time) as maxtime
from a
group by id;
quit;[/code:24017]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-4-17 10:26:31 | 只看该作者
proc sort data=a;
by id;
data b;
set a;
by id;
if last.id;
run;

this method can't handle with the dataset in which variable have two same max value.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-4-17 16:43:50 | 只看该作者
那就综合一下,把所有最大记录保存下来
proc sort data=a;
   by id descending time;
data b;
  retain max;
  set a;
  by id;
  if first.id then do;
    max=time;
        output;
  end;
  else
    if time=max then output;
  drop max;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-4-17 17:03:41 | 只看该作者
我这边不能试,这个可能更简洁点
[code:b042b]proc sort data=a;
by id descending time;
data b;
set a;
by id;
if first.id or time=lag(time);
run;[/code:b042b]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2004-4-17 18:13:41 | 只看该作者
可以运行,的确要简洁些
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2004-4-19 00:08:16 | 只看该作者
谢谢大家,问题解决^_^
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2004-4-19 20:43:40 | 只看该作者
[quote="yooyork":46d54]
......
[color=red:46d54]by id;[/color:46d54]
......
[/quote:46d54]

应该是
[code:46d54]proc sort data=a;
by id time;
data b;
set a;
by id;
if last.id;
run;[/code:46d54]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2004-4-19 22:30:04 | 只看该作者
哦,是的,疏忽了 :)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 23:42 , Processed in 0.227168 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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