SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 865|回复: 5
打印 上一主题 下一主题

如何合并观察值的数据?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-7-8 14:31:11 | 只看该作者

如何合并观察值的数据?

数据格式如下:
姓名    收入      支出
张三    1000           200
张三    2000           300
李四    4000           600

问题:如何用sas计算出每个人的总收入和总支出?即得到下述结果:

姓名    收入      支出
张三    3000           500
李四    4000           600
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-7-8 14:48:46 | 只看该作者

Re: 如何合并观察值的数据?

data shouru1;
input name $ 1-5 s z;
cards;
张三 1000 200
张三 2000 300
李四 4000 600
;
run;
proc sql;
create table end as
select name , sum(s) as shouru,
sum(z) as zhichu
from shouru1
group by name;
quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-7-8 17:22:58 | 只看该作者

Re: 如何合并观察值的数据?

data shouru1;
input name $ 1-5 s z;
cards;
张三 1000 200
张三 2000 300
李四 4000 600
;
run;
proc sort data=shouru1;
by name;
data result;
set shouru1;
by name;
if first.name then do;
shouru=0;
zhichu=0;
end;
shouru+s;
zhichu+z;
if last.name then output;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-7-9 11:02:59 | 只看该作者

Re: 如何合并观察值的数据?

谢谢!很受益。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-7-10 10:05:33 | 只看该作者

Re: 如何合并观察值的数据?

写的都不错,xgghxkhuang 的方法利用了SQL的分组合并,而jimmy782的方法则是用了数据之间的运算。
相信从执行效率上来看jimmy782的方法要比前者要快。但从使用上还是xgghxkhuang 的方法适用。
data result;
set shouru1;
by name;
if first.name then do;
shouru=0;
zhichu=0;
end;
shouru+s;
zhichu+z;
if last.name then output;
run;

[b:1b0v42is]jimmy782[/b:1b0v42is]能否讲讲你方法中first.name 和last.name的含义,我是新学SAS。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-7-10 15:17:17 | 只看该作者

Re: 如何合并观察值的数据?

哦,我是不习惯写SQL语句,因为客户要求都是写sas语句,对于first 和 last,是根据你在by 后面跟的变量来说的,就是将变量分组,first.name 就是name 这组的第一条记录,last.name 就是name这组的最后一条记录,最白的意思就是同一XX下的什么什么,当然你在用这个之前要按by 后面的变量排序,如果是spds库就可以直接在数据集后面加(bysort=yes)选项。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 22:06 , Processed in 0.068099 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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