作者tew (咖啡王子)
站内Statistics
标题Re: [程式] sas加总
时间Wed Jan 16 10:47:53 2013
※ 引述《lsctime (快乐有这麽困难吗?)》之铭言:
: ※ 引述《lena0425 (lena)》之铭言:
: : ------------------------------------------------------------------------
: : [软体程式类别]:
: : sas
: : [程式问题]:
: : 资料处理
: : [软体熟悉度]:
: : 新手(不到1个月)
: : [问题叙述]:
: : 我想要将同样id的人的a1加总
: : [程式范例]:
: : id a1 我想要多一个变数 y_1 变成
: : 1 w
: : 1 i
: : 1 q
: : 2 e
: : 2 p
: : id a1 y_1
: : 1 w
: : 1 i
: : 1 q 3---->每个a1都算一次门诊,这个人共看了3次
: : 2 e
: : 2 p 2----->这个人看了2次
: : 请问该怎麽写指令> <
: : 谢谢
: data a;
: input id $ a1 $;
: cards;
: 1 w
: 1 i
: 1 q
: 2 e
: 2 p
: ;
: proc sort;by id;/*为後续并档做准备*/
: run;
: /*用sql计算就医次数,不用sql也可以用retain但个人习惯用sql*/
: proc sql;
: create table a1 as
: select id,
: count(id) as y_1
: from a
: group by id;
: quit;
: /*把计算出来的次数合并回去原档案*/
用sql就不用两段式
proc sql;
create table a1 as
select id,a1,count(id) as y_1
from a
group by id;
quit;
但有些初学者未必了解上述语法
我会建议由叙述统计语法着手
proc freq
proc freq data=a;
table id/out=a1;
run;
上述语法可以产生次数分配
就可以进行後续动作
: data a2;
: merge a a1;
: by id;
: run;
: 以上浅见给你参考,感觉应该有更简洁的写法
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.163.224.240
1F:→ lena0425:谢谢^^ 01/21 21:18