作者yonny (悠逆)
看板Statistics
标题Re: [程式] SAS加总、合并问题
时间Fri Nov 21 22:49:51 2014
如果只是要看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学会後可以减少很多重覆的工 有空可以研究下*/
※ 引述《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://webptt.com/cn.aspx?n=bbs/Statistics/M.1416581394.A.3B9.html
1F:→ MOONY135: 初学者就教他用巨集应该会让他却步吧 11/22 16:05