作者tew (咖啡王子)
站内Statistics
标题Re: [程式] 请问sas proc mean能否以表格型态输出
时间Sun Sep 16 10:00:52 2012
所以你只是要每个都有同年分的总值就好了
而非是限定特定月份加总
因为你最初的写法是 A 201101~201103
B 201101~201103
C 201101~201102
让我以为你有特殊的要求
但是只是同年度加总 很简蛋的
proc sql;
create table total as select
obs,yearmo,value,sum(value) as total
from yourfile
group by obs,year(yearmo);
quit;
如果你的yearmo是时间隔式 以上语法可以成立
不然就
data yourfile;
set yourfile;
year=int(yearmo/100);
run;
proc sql;
create table total as select
obs,yearmo,value,sum(value) as total
from yourfile
group by obs,year;
quit;
这样就可以了
※ 引述《dofu1943 (那就念吧~~)》之铭言:
: [软体程式类别]:
: sas
: [程式问题]:
: 资料处理
: [软体熟悉度]:
: 新手
: [问题叙述]:
: 根据tew大的提示後,我的方向变了一下
: 改从proc sql下手
: 想从下列资料(因资料放在档案夹的r所以命为r.a)
: 按obs和yearmon得到value的加总值
: 并且以table的方式呈现加总值变数total
: (新create的table称为add)
: 接着利用两个条件值obs和yearmon
: 将加总值里的total并到原来的档案
: obs yearmon year value
: A 201005 2010 10
: A 201010 2010 20
: A 201101 2011 50
: A 201103 2011 90
: B 201006 2010 30
: B 201010 2010 50
: B 201101 2011 70
: B 201103 2011 50
: C 201101 2011 80
: C 201102 2011 10
: . . .
: . . .
: 希望变成
: obs yearmon year value total
: A 201005 2010 10 30
: A 201010 2010 20 30
: A 201101 2011 50 140
: A 201103 2011 90 140
: B 201006 2010 30 80
: B 201010 2010 50 80
: B 201101 2011 70 120
: B 201103 2011 50 120
: C 201101 2011 80 90
: C 201102 2011 10 90
: . . . .
: [程式范例]:
: 将加总值create出一张新的table称为add
: PROC SQL ;
: CREATE table add as
: SELECT obs , year, sum(value) AS total
: FROM r.a
: where obs is not missing
: group by obs, year ;
: QUIT ;
: PROC SQL;
: SELECT
: r.a.obs, r.a.year as year, r.a.*, (这里有点不太懂为什麽要加as year)
: add.obs, add.year, add.total
: from add full join r.a
: on (add.obs=r.a.obs) and (add.year=r.a.year)
: ;
: quit
: 因为都是在google找的
: 而且手边没有sas,没办法马上试
: 所以想请版友帮我看一下这样的想法是否正确
: 还有
: full join那段select完r.a的yearmon之後
: 为什麽要加上as yearmon
: 感谢版友的帮忙
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.45.196.45
1F:推 dofu1943:没错~~~其实我要BY年度的加总值,所以我把资料重新打过,年 09/16 17:25
2F:→ dofu1943:的取法我打算用substr(left(year),1,4)来处理~~不过t大 09/16 17:26
3F:→ dofu1943:你可以帮我看一下full join那段的写法是否无误~~感恩 09/16 17:27
4F:→ dofu1943:sorry,更正第一句话,是by年度和by特定人的加总值 09/16 17:29
5F:→ dofu1943:最後再比对年度和特定人将其加总值并到原来的资料里~~ 09/16 17:30