全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2031 5
2014-06-28
我可计算出每年的汇总数据,如:

dat13:

city   y1   y2     y3      
hz   100  200  300
nb    29  38     83



dat14
city   y1   y2     y3      
hz   47  56  878
nb    12  34     56



我想直接得到两个数据集的比较,即14比13的增幅
有没有现成的方法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-6-30 09:54:05
楼主是不是想用proc compare?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-30 10:15:05
proc compare base=dat13 compare=dat14 out=result(drop=_type_ _obs_) noprint;
id city;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-1 13:56:21
FB_FLORA 发表于 2014-6-30 09:54
楼主是不是想用proc compare?
用了compare,但输出只有记录集的比较而已
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-1 14:18:36
用SQL
proc sql;
create table xx as select a.*, b.y1 as by1, b.y2 as by2, b.y3 as by3, a.y1-b.y1 as dy1, a.y2-b.y2 as dy2, a.y2 -b.y2 as dy2
from dat13 as a left join dat14
on a.city=b.city;
--------------------------------------------
或用 merge by city 后, 再计算
PROC SORT DATA=dat13 OUT=dat13;
  BY city;

proc dat14A;
set dat14(rename=(y1=b_y1 y2=b_y2 y3=b_y3));

PROC SORT DATA=dat14A OUT=dat14A;
  BY city;
RUN;

DATA dat2 ;
  MERGE dat13 dat14A;
  BY city;
RUN:

Data dat22;
  set dat2;
  dy1=y1-by1;
  dy2=y1-by2;
  dy3=y1-by3;
  
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-7-1 14:22:23
孤灯渡漠 发表于 2014-7-1 13:56
用了compare,但输出只有记录集的比较而已
我记得在difference中会有对应记录的单个变量的值的不同的显示,diff之类的
如果需要的是数据集的话好像可以通过ods output输出

我觉得可能看起来有些简陋……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群