作者anovachen (囧)
看板Statistics
标题Re: [问题] sas算平均
时间Sun Apr 14 15:54:02 2013
※ 引述《mono1023 (阿沛)》之铭言:
: 我的资料格式如下
: a b
: 1 0
: 1 0
: 1 1
: 2 1
: 2 0
: 2 1
: a是id b是数值
: 我想要各自计算a为1时的平均值以及2时的平均值
: 最後再加总起来计算几何平均值
↑看不太懂这句话的意思...
: 请问该如何写程式码?
: 我只会proc means
: var b
: by a
: 但好像只能算各自的
: 新手先谢谢大家!!!
data test;
input a b @@;
cards;
1 0 1 0 1 1
2 1 2 0 2 1
;
run;
proc means data=test;class a;var b;output out=avg1 mean=avg; run;
data avg1; set avg1; where a <> .; ln_b=log(avg); run;
proc means data=avg1; output out=avg2 mean=avg; var ln_b; run;
data gmean; set avg2; gmean=exp(avg); run;
proc print data=gmean; run;
如果不对a分层,直接算b的几何平均,
会遇到一个问题是....
因为b有至少一个数字是0,
先取log,取算术平均再anti-log的做法会出问题。
(log0无法定义)
先算连乘再开n次根号也是做得出来,
可是很没有意义(明明就知道答案是零了,还写那麽多程式= =)
所以我猜你要问的是a=1时b的算术平均和a=2时b的算术平均的几何平均?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.255.11.196
1F:推 mono1023:阿 对= = 是算数平均和 我打错了!!! 然後再把各个 04/14 16:18
2F:→ mono1023:个小群组资料加总算出整体的算数平均数 04/14 16:19
3F:→ mono1023:都是只要算数平均 不用几何 对不起QQ 04/14 16:20