以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]有两列分组的表如何求他们的标准差  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=113043)

--  作者:jjjeyes
--  发布时间:2018/1/7 23:12:00
--  [求助]有两列分组的表如何求他们的标准差
有个表要由两列“性别”和“年级编号”进行分组后求人数、身高平均数、身高标准差、身高指标和、
如下例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:例子.zip

最后得到下表:

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20180107224955.jpg
图片点击可在新窗口打开查看

已经可以求得人数、身高平均数、身高指标和,但是身高标准差不知道怎么求,请赐教!
代码:
Dim g As New GroupTableBuilder("单项指标统计表", DataTables("评价结果"))
g.Groups.AddDef("性别")
g.Groups.AddDef("年级编号")
g.Totals.AddDef("年级编号", AggregateEnum.Count, "人数")
g.Totals.AddDef("身高", AggregateEnum.Average, "身高平均数")
g.Totals.AddDef("身高", "身高累计值")
g.Decimals = 2
g.Build()
MainTable = Tables("单项指标统计表")



--  作者:有点甜
--  发布时间:2018/1/7 23:22:00
--  

无法直接统计,需要生成后,循环每一行,然后查询计算的。

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=92787&skin=0

 


--  作者:jjjeyes
--  发布时间:2018/1/7 23:28:00
--  
但是,在设置汇总模式下是有Std:标准偏差和StdPop:总体标准偏差两个参数的啊!
--  作者:有点甜
--  发布时间:2018/1/8 9:12:00
--  

代码这样写

 

Dim g As New GroupTableBuilder("单项指标统计表", DataTables("评价结果"))
g.Groups.AddDef("性别")
g.Groups.AddDef("年级编号")
g.Totals.AddDef("年级编号", AggregateEnum.Count, "人数")
g.Totals.AddDef("身高", AggregateEnum.Average, "身高平均数")
g.Totals.AddDef("身高", AggregateEnum.std, "身高标准差")
g.Totals.AddDef("身高", "身高累计值")
g.Decimals = 2
g.Build()
Dim t As Table = Tables("单项指标统计表")
For Each r As Row In t.Rows
    If r("性别") = "1" Then
        r("性别") = "男"
    Else
        r("性别") = "女"
    End If
    r("身高标准差") = DataTables("评价结果").Compute("StDev(身高)", "年级编号 = \'" & r("年级编号") & "\'")
Next
MainTable = t


--  作者:jjjeyes
--  发布时间:2018/1/8 11:11:00
--  
这个值算出来不对!

图片点击可在新窗口打开查看此主题相关图片如下:tim截图20180108110859.jpg
图片点击可在新窗口打开查看
男女身高标准差是一样的!!


--  作者:有点甜
--  发布时间:2018/1/8 11:13:00
--  

Dim g As New GroupTableBuilder("单项指标统计表", DataTables("评价结果"))
g.Groups.AddDef("性别")
g.Groups.AddDef("年级编号")
g.Totals.AddDef("年级编号", AggregateEnum.Count, "人数")
g.Totals.AddDef("身高", AggregateEnum.Average, "身高平均数")
g.Totals.AddDef("身高", AggregateEnum.std, "身高标准差")
g.Totals.AddDef("身高", "身高累计值")
g.Decimals = 2
g.Build()
Dim t As Table = Tables("单项指标统计表")
For Each r As Row In t.Rows
    r("身高标准差") = DataTables("评价结果").Compute("StDev(身高)", "年级编号 = \'" & r("年级编号") & "\' and 性别 = \'" & r("性别") & "\'")

    If r("性别") = "1" Then
        r("性别") = "男"
    Else
        r("性别") = "女"
    End If
Next
MainTable = t