繁体   English   中英

根据R中的频率表计算分组方差

[英]Calculating grouped variance from a frequency table in R

我如何在R中从看起来像这样的数据集中计算总体方差和每个组的方差(例如):

Group Count Value
A      3     5
A      2     8
B      1     11
B      3     15

我知道要整体上计算方差,而忽略要执行的组: var(rep(x$Value, x$Count)),但是如何自动为每个组计算方差,以说明频率呢? 例如,组A,组B等的方差,..我希望我的输出具有以下标头:

Group, Total Count, Group Variance 

我也查看了此链接; R计算频率分布不同(没有组成分)的文件的均值,中位数和方差,因此这不是重复项。

感谢您的所有帮助。

一种选择是使用data.table 转换data.frame到data.table( setDT ),并获得var对“价值”和sum的“伯爵”,由“集团”。

library(data.table)
setDT(df1)[, list(GroupVariance=var(rep(Value, Count)),
                      TotalCount=sum(Count)) , by = Group]
#    Group GroupVariance TotalCount
#1:     A           2.7          5
#2:     B           4.0          4

使用dplyr的类似方法是

library(dplyr)
group_by(df1, Group) %>% 
      summarise(GroupVariance=var(rep(Value,Count)), TotalCount=sum(Count))
#     Group GroupVariance TotalCount
#1     A           2.7          5
#2     B           4.0          4

这是一个以R为底的快速包装器。第一步是按Count增长数据集,然后按组计算方差

df1 <- df[rep(seq_len(nrow(df)), df$Count), ]
with(df1, tapply(Value, Group, var))
#   A   B 
# 2.7 4.0 

或类似

aggregate(Value ~ Group, df1, function(x) c(Var = var(x), Count = length(x)))
#   Group Value.Var Value.Count
# 1     A       2.7         5.0
# 2     B       4.0         4.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM