Re: [問題] sas算平均
※ 引述《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
推
04/14 16:18, , 1F
04/14 16:18, 1F
→
04/14 16:19, , 2F
04/14 16:19, 2F
→
04/14 16:20, , 3F
04/14 16:20, 3F
討論串 (同標題文章)