[程式] 請問sas proc mean能否以表格型態輸出
[軟體程式類別]:
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)
推
09/15 01:37, , 1F
09/15 01:37, 1F
※ 編輯: 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)
推
09/18 18:52, , 2F
09/18 18:52, 2F
沒錯~~
其實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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):