我喜欢加权案例以在 ggplot 中绘制图表。对于每种情况,我都有一个特定的权重因子,例如:
value weight
2 0.34
5 0.75
6 2.31
等等...绘制简单的分组条(“交叉表”)很容易,我可以使用 xtabs 函数:
ftab <- round(xtabs(weightBy ~ varCount + varGroup),0)
当我想用加权案例绘制直方图、简单条形图或单箱图时,我想保持分布,所以我使用以下函数来加权案例:
weightby <- function(var, weight) {
items <- unique(var)
newvar <- c()
for (i in 1:length(items)) {
newcount = round(sum(weight[which(var==items[i])]))
newvar <- c(newvar, rep(items[i], newcount))
}
return (newvar)
}
if (!is.null(weightBy)) {
variable <- weightby(variable, weightBy)
}
但是,此功能忽略了原来的案例顺序,“案例”现在根据相关类别升序编号。但是...如果我想绘制分组箱线图,我需要 a) 具有加权计数的加权变量 b) 具有加权组的加权变量 c) 每个组内的加权平均值、中位数和分位数
我该怎么做?我有正确的加权交叉表,但每个子组没有加权平均值,因为我不能使用上面显示的函数来创建表格(因为丢失了正确的案例顺序)。
任何提示都非常感谢!