繁体   English   中英

频率分布的中位数

[英]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.

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