Re: [程式] 請問sas proc mean能否以表格型態輸出
所以你只是要每個都有同年分的總值就好了
而非是限定特定月份加總
因為你最初的寫法是 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
推
09/16 17:25, , 1F
09/16 17:25, 1F
→
09/16 17:26, , 2F
09/16 17:26, 2F
→
09/16 17:27, , 3F
09/16 17:27, 3F
→
09/16 17:29, , 4F
09/16 17:29, 4F
→
09/16 17:30, , 5F
09/16 17:30, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):