SAS中文论坛
标题:
如何合并观察值的数据?
[打印本页]
作者:
shiyiming
时间:
2008-7-8 14:31
标题:
如何合并观察值的数据?
数据格式如下:
姓名 收入 支出
张三 1000 200
张三 2000 300
李四 4000 600
问题:如何用sas计算出每个人的总收入和总支出?即得到下述结果:
姓名 收入 支出
张三 3000 500
李四 4000 600
作者:
shiyiming
时间:
2008-7-8 14:48
标题:
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;
作者:
shiyiming
时间:
2008-7-8 17:22
标题:
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;
作者:
shiyiming
时间:
2008-7-9 11:02
标题:
Re: 如何合并观察值的数据?
谢谢!很受益。
作者:
shiyiming
时间:
2008-7-10 10:05
标题:
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。
作者:
shiyiming
时间:
2008-7-10 15:17
标题:
Re: 如何合并观察值的数据?
哦,我是不习惯写SQL语句,因为客户要求都是写sas语句,对于first 和 last,是根据你在by 后面跟的变量来说的,就是将变量分组,first.name 就是name 这组的第一条记录,last.name 就是name这组的最后一条记录,最白的意思就是同一XX下的什么什么,当然你在用这个之前要按by 后面的变量排序,如果是spds库就可以直接在数据集后面加(bysort=yes)选项。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2