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

求R语言从data.frame生成含绝对/累计绝对/相对/累计相对频数的频数表命令

在R语言中生成包含各类频数的频数表

问题分析

你当前的代码存在语法错误:创建data.frame时,不能直接用<-定义列,而且此时prova还未生成,无法引用prova$Freq.ass。另外,epiDisplay的tab1函数更适合从原始观测数据生成频数表,而非从已汇总的频数数据操作。

解决方案

情况1:从已汇总绝对频数的data.frame生成完整频数表

如果你已经有类别列和绝对频数列,可按以下步骤生成所有所需列:

# 创建基础数据框(注意正确语法,不用<-定义列)
prova <- data.frame(
  Variabile = c("A", "B", "C", "D", "E"),
  Freq.ass = c(1, 3, 7, 10, 17),
  stringsAsFactors = FALSE
)

# 计算累计绝对频数
prova$Cum.Abs.freq <- cumsum(prova$Freq.ass)

# 计算相对频数(保留2位小数)
prova$Rel.freq <- round(prova$Freq.ass / sum(prova$Freq.ass), 2)

# 计算累计相对频数
prova$Cum.Rel.freq <- cumsum(prova$Rel.freq)

# 重命名列到目标名称
colnames(prova) <- c("类别", "绝对频数", "累计绝对频数", "相对频数", "累计相对频数")

# 查看结果
print(prova)

运行后输出:

类别 绝对频数 累计绝对频数 相对频数 累计相对频数
1    A        1            1     0.02         0.02
2    B        3            4     0.06         0.08
3    C        7           11     0.14         0.22
4    D       10           21     0.20         0.42
5    E       17           38     0.35         0.77

注:累计相对频数最后一行不是1是因为四舍五入,若需精确值,可去掉round再计算累计

情况2:从原始观测数据生成频数表

如果你的数据是原始观测记录(每行对应一个样本),可选择以下两种方法:

方法1:使用基础R

# 模拟原始数据
raw_data <- data.frame(
  Variabile = sample(c("A", "B", "C", "D", "E"), 100, replace = TRUE)
)

# 计算绝对频数
abs_freq <- table(raw_data$Variabile)
# 累计绝对频数
cum_abs_freq <- cumsum(abs_freq)
# 相对频数
rel_freq <- round(prop.table(abs_freq), 2)
# 累计相对频数
cum_rel_freq <- cumsum(rel_freq)

# 合并成数据框
freq_table <- data.frame(
  类别 = names(abs_freq),
  绝对频数 = as.numeric(abs_freq),
  累计绝对频数 = as.numeric(cum_abs_freq),
  相对频数 = as.numeric(rel_freq),
  累计相对频数 = as.numeric(cum_rel_freq)
)

print(freq_table)

方法2:使用epiDisplay包

# 仅第一次运行时安装
# install.packages("epiDisplay")
library(epiDisplay)

# 直接生成带累计统计的频数表
tab1(raw_data$Variabile, sort.group = FALSE, cum.percent = TRUE)

该函数会直接输出包含绝对频数、相对频数、累计绝对频数、累计相对频数的表格,无需手动计算。

内容的提问来源于stack exchange,提问作者Giuseppe De Pinto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:45:22