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

如何在R语言中计算频数表的均值与中位数?

解决频数表的均值和中位数计算问题

你的tab1是R中的table类型,直接用mean()或summary()会默认计算频数的统计量,而非年龄的,所以结果错误。以下是两种简便计算方式:

方法1:加权计算(无需展开原始数据,高效)

计算均值

使用weighted.mean()函数,直接基于年龄和对应频数计算加权均值:

# 提取年龄(转为数值型)和频数
ages <- as.numeric(names(tab1))
freqs <- as.vector(tab1)

# 计算加权均值
mean_age <- weighted.mean(x = ages, w = freqs)
mean_age

计算中位数

通过累计频数找到中位数所在的年龄区间:

# 计算总样本量
total <- sum(freqs)
# 计算累计频数
cumulative_freq <- cumsum(freqs)
# 找到第一个累计频数超过总样本量一半的年龄
median_age <- ages[which(cumulative_freq >= total/2)[1]]
median_age

方法2:展开为原始数据向量(直观,适合样本量不大的情况)

把频数表还原为每个年龄对应的原始数据向量,再用常规统计函数计算:

# 展开原始数据
raw_data <- rep(ages, times = freqs)

# 计算均值和中位数
mean(raw_data)
median(raw_data)

两种方法结果一致,方法1更适合大样本场景,避免内存占用过高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:07:24