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

时间:2015-02-22 15:41:47

标签: r frequency variance frequency-distribution

我如何在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 computing mean, median, variance from file with frequency distribution不同(没有组件)所以这不是重复。

感谢您提供所有帮助。

2 个答案:

答案 0 :(得分:3)

一种选择是使用data.table。将data.frame转换为data.table(setDT)并获取" Value"的var和{#1}}"伯爵"由" Group"。

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

答案 1 :(得分:2)

这里是基础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