作者anniecs ( )
站内Statistics
标题Re: [问题] sas算平均
时间Mon Apr 15 01:59:35 2013
/*资料输入*/
data test;
input a b @@;
cards;
1 0 1 0 1 1
2 1 2 0 2 1
;
/*计算第1层平均*/
proc sql;
create table group_mean as
select a, mean(b) as group_mean
from test
group by a;
quit;
/*计算总平均*/
proc sql;
create table mean2 as
select mean(group_mean) as total_mean
from group_mean;
quit;
是这样吗??
※ 引述《anovachen (囧)》之铭言:
: ※ 引述《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.240.141.22