You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中以列名为权重计算加权均值(基于已有排名频率表)

用R语言计算排名频率表的加权均值

嘿,我来帮你搞定这个加权均值的计算!你已经有了按项目分类的排名频率表df.frequency,接下来咱们一步步来实现:

步骤1:将频率表转换为数据框

因为原始的df.frequency是table类型,直接操作起来不太灵活,咱们先把它转成数据框格式,方便后续计算:

# 把table对象转换为数据框,行对应项目,列对应排名1-5
df_freq <- as.data.frame.matrix(df.frequency)

步骤2:定义权重

咱们要用频率表的列名(也就是排名1到5)作为权重,先把这些列名转换成数值类型:

# 提取列名并转为数值型权重
weights <- as.numeric(colnames(df_freq))

步骤3:计算每个项目的加权均值

加权均值的核心公式是:(1×排名1频率 + 2×排名2频率 + ... +5×排名5频率) ÷ 总频率。这里总频率就是每个项目的所有频率之和(你的数据里每个项目总频率都是5,对应5个样本)。咱们用apply函数按行批量计算:

# 按行计算加权和,再除以总频率得到加权均值
weighted_means <- apply(df_freq, 1, function(row) {
  sum(row * weights) / sum(row)
})

步骤4:整理并查看结果

把计算结果整理成更直观的数据框,方便查看:

# 组合项目名称与对应的加权均值
result_df <- data.frame(
  Item = rownames(df_freq),
  Weighted_Mean = weighted_means,
  stringsAsFactors = FALSE
)

# 打印最终结果
print(result_df)

运行后你会得到如下结果:

Item Weighted_Mean
A 1.4
B 2.2
C 2.6
D 4.0
E 4.8

这个结果和手动计算的逻辑完全一致,比如项目A的加权均值就是(3×1 + 2×2)/5 = 1.4,完美匹配需求!

内容的提问来源于stack exchange,提问作者Saftever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:52:10