小编Ant*_*tra的帖子

如何计算R中的汇总标准差?

我想计算数据框中所有唯一站点的合并(实际加权)标准偏差.

这些站点的值是单一物种林分的值,我想汇集平均值和sd,以便我可以比较阔叶林分和针叶林林分.
这是具有阔叶林分的值的数据框(df):

keybl           n   mean    sd
Vest02DenmDesp  3   58.16   6.16
Vest02DenmDesp  5   54.45   7.85
Vest02DenmDesp  3   51.34   1.71
Vest02DenmDesp  3   59.57   5.11
Vest02DenmDesp  5   62.89   10.26
Vest02DenmDesp  3   77.33   2.14
Mato10GermDesp  4   41.89   12.6
Mato10GermDesp  4   11.92   1.8
Wawa07ChinDesp  18  0.097   0.004
Chen12ChinDesp  3   41.93   1.12
Hans11SwedDesp  2   1406.2  679.46
Hans11SwedDesp  2   1156.2  464.07
Hans11SwedDesp  2   4945.3  364.58
Run Code Online (Sandbox Code Playgroud)

Keybl是该网站的代码.汇总SD的公式是:

s=sqrt((n1-1)*s1^2+(n2-1)*s2^2)/(n1+n2-2))
Run Code Online (Sandbox Code Playgroud)

(对不起,我无法发布图片,也没有找到直接转到公式的链接)

其中2是组的数量,因此将根据站点而变化.我知道这用于t检验,两个人想要比较.在这种情况下,我不打算比较这些组.我的教授建议我用这个公式得到一个加权的sd.我找不到以我需要的方式包含这个公式的R函数,因此我尝试构建自己的函数.然而,我是R的新手,并不擅长制作函数和循环,因此我希望得到你的帮助.

这是我到目前为止所得到的:

sd=function (data) {
nc1=data[z,"nc"]
sc1=data[z, "sc"]
nc2=data[z+1, "nc"]
sc2=data[z+1, "sc"]
sd1=(nc1-1)*sc1^2 + (nc2-1)*sc2^2
sd2=sd1/(nc1+nc2-length(nc1))
sqrt(sd2)
} …
Run Code Online (Sandbox Code Playgroud)

for-loop r function standard-deviation

4
推荐指数
2
解决办法
3万
查看次数

标签 统计

for-loop ×1

function ×1

r ×1

standard-deviation ×1