[英]Median of a frequency distribution
我想为大量样本计算频率分布的中位数。 每个样本都具有多个类别(示例中为3)及其各自的频率。 每个类都关联一个不同的值
data <- data.frame(sample=c(1,2,3,4,5),
freq_class1=c(1,1,59,10,2),
freq_class2=c(1,0,35,44,22),
freq_class3=c(0,4,1,9,2),
value_class1=c(12,11,14,11,13),
value_class2=c(27,33,34,31,29),
value_class3=c(75,78,88,81,65))
例如,样本1的中位数为19.5。 我假设可以在每个样本的频率分布上使用quantile()
完成此操作,但是所有尝试均失败。
你有什么建议吗?
这可能不是最优雅的方法,但是它起作用了:基本上,我是从data.frame中包含的信息中重新创建完整的数据向量,然后找到其中值。 编写一个函数来执行此操作使我可以使用apply
快速对data.frame的每一行进行操作。
find.median <- function(x) {
full.x <- rep(x[5:7],times=x[2:4])
return(median(full.x))
}
> apply(data,1,find.median)
[1] 19.5 78.0 14.0 31.0 29.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.