→ MOONY135: 初學者就教他用巨集應該會讓他卻步吧 11/22 16:05
※ 引述《LittleMore (LittleMore)》之銘言:
: [軟體程式類別]:
: SAS
: [程式問題]:
: 加總
: [軟體熟悉度]:
: 新手(不到1個月)
: [問題敘述]:
: 1.我已從三個檔案 挑出某區間成交日 有異常報酬>5 >6 >7
: s5 s6 s7
: id ret id ret id ret
: 1108 5.67 1108 6.99 1104 10.22
: 1108 6.99 1104 10.22 1110 7.87
: 1104 10.22 1110 7.87 1101 8.32
: 1110 7.87 1101 8.32
: 1101 8.32 1102 6.33
: 1102 6.33
: 2.我要如何下指令? 讓他抓出三個資料的count 例子如下
: n
: 1 6
: 2 5
: 3 3
: [程式範例]:
: 我目前只會這樣
: Proc SQL;
: create table count as select count(id) as n
: from sample_ret5;
: n
: 1 6
: 或是 怎樣只留下s5、s6、s7的id
: 合併成新的s567 例子如下
: id id1 id2
: 1108 1108 1104
: 1108 1104 1110
: 1104 1110 1101
: 1110 1101
: 1101 1102
: 1102
: 這樣我或許就可以用 抓出來
: Proc SQL;
: create table count as select *,
: count(id) as n , count(id1) as n1 , count(id2) as n2
: from sample_ret567;
: 內容有點臭長 但很感謝你願意看完
: 雖然這看似很簡單 但我看課本摸了一個上午還沒弄出來 ><
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.117.238
※ 文章網址: http://www.ptt.cc/bbs/Statistics/M.1416581394.A.3B9.html
如果只是要看count
通常我會直接用 PROC MEANS data=xxx N; 直接看樣本數就好了~
不過感覺你好像貌似要輸出?
如果你要輸出而且有好幾個檔案
是不是要試試看用MACRO + PROP MEANS output的功能
這樣不管以後有幾個檔案 都可以直接跑出匯整全部的結果
假設你三個檔案 檔名分別是 S5 S6 S7 最後就是
%test(S5)
%test(S6)
%test(S7)
若之後檔案數有增加 例如有五個檔案 S5 S6 S7 S8 S9
就改成
%test(S5)
%test(S6)
%test(S7)
%test(S8)
%test(S9)
以下程式:
/**/
DATA Combine;
i=1;
RUN;
%MACRO Test(F);
ODS select none;
%let N=&F._n;
PROC MEANS data=&F. ;
VAR ID;
output out=new n=&N.;
RUN;
DATA New;
SET New;
i=1;
keep &N. i;
RUN;
DATA Combine;
Merge Combine New;
By i;
RUN;
%MEND;
%test(S5)
%test(S6)
%test(S7)
ODS select all;
PROC print data=Combine(drop=i);
RUN;
/*關於MACRO 網路上有個部落格有滿簡單明瞭的教學
google一下滿容易找 若找不到可以私信問我~
MACRO學會後可以減少很多重覆的工 有空可以研究下*/