作者dofu1943 (那就念吧~~)
站内Statistics
标题[程式] 请问sas proc mean能否以表格型态输出
时间Fri Sep 14 22:33:55 2012
[软体程式类别]:
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: 36.227.124.117
※ 编辑: dofu1943 来自: 36.227.124.117 (09/14 22:38)
1F:推 tew:SQL or merge 09/15 01:37
※ 编辑: dofu1943 来自: 36.227.122.1 (09/15 09:04)
※ 编辑: dofu1943 来自: 36.227.122.21 (09/16 08:37)
※ 编辑: dofu1943 来自: 36.227.122.21 (09/16 08:38)
※ 编辑: dofu1943 来自: 36.227.122.21 (09/16 08:39)
※ 编辑: dofu1943 来自: 36.227.122.21 (09/16 08:47)
嗯~
後来我自己试了一下,上面那段写法有问题
改了之後变成
proc sql;
CREATE table AA as (在work资料夹开一个AA table)
select *
from a full join add
on ( a.var2=add.var2 ) and ( a.year=add.year )
;
quit;
这里我比较疑惑的是
上述的操作好像只能在work里操作
如果想在lib里的某个资料夹进行时
好像就不能
例如在reserch这个资料夹里操作
而写成
reserch.a.var2=reserch.add.var2
好像就无法成功~~~~~~
※ 编辑: dofu1943 来自: 36.227.123.145 (09/17 20:33)
2F:推 tew:我的语法不是就完成了? 09/18 18:52
没错~~
其实t大的写法其实就已经完成了
但...我问第二个问题(就是合并两个table的语法)
的原因其实是因为我还有另一张excel表(简称B表)
而那张excel表的部份资讯是原来proc sql creat 的加总table所没有的
所以creat 加总值的表之後还要针对当中的两个变数(即上述所提的obs 和 year)
去合并B表
於是我才藉着这个问题,问了两样方法
所以其实是我的问题问得不太好啦~~~
因为我问的问题其实只要用一种语法就可以写出来了
不需要用proc sql重新抽变数出来再进行合并~~
总之~~~
感谢t大罗
※ 编辑: dofu1943 来自: 36.227.123.190 (09/18 22:00)
※ 编辑: dofu1943 来自: 36.227.123.190 (09/18 22:01)