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

如何在R语言中创建观测数量的汇总统计表格?

用R语言生成观测数量的汇总统计表格

这里整理了几种实用方法,附代码和结果示例,所有示例基于下面的模拟数据集:

set.seed(123)
df <- data.frame(
  性别 = sample(c("男", "女"), 100, replace = TRUE),
  年龄组 = sample(c("青年", "中年", "老年"), 100, replace = TRUE),
  疾病状态 = sample(c("患病", "未患病"), 100, replace = TRUE)
)

方法1:Base R 基础统计

单变量观测数统计

用table()生成频数表后转成数据框,方便格式化:

gender_count <- as.data.frame(table(df$性别))
colnames(gender_count) <- c("性别", "观测数量")
gender_count

输出结果表格:

性别观测数量
男47
女53

多变量交叉观测数统计

用xtabs()生成交叉频数表,适合看分组交叉的观测分布:

cross_count <- as.data.frame(xtabs(~性别 + 疾病状态, data = df))
colnames(cross_count) <- c("性别", "疾病状态", "观测数量")
cross_count

输出结果表格:

性别疾病状态观测数量
男患病22
女患病27
男未患病25
女未患病26

方法2:dplyr 灵活分组统计

如果你需要自定义分组逻辑,dplyr的分组+汇总操作更灵活:

library(dplyr)

group_count <- df %>%
  group_by(年龄组, 性别) %>%
  summarise(观测数量 = n(), .groups = "drop")

group_count

输出结果表格:

年龄组性别观测数量
青年男16
青年女18
中年男15
中年女17
老年男16
老年女18

方法3:tableone 生成专业汇总表

如果是科研或医学场景,tableone能生成带百分比的标准化汇总表:

library(tableone)

# 指定需要统计的分类变量
vars <- c("性别", "年龄组", "疾病状态")
table_one <- CreateTableOne(vars = vars, data = df, factorVars = vars)

# 转成数据框并提取关键列
table_one_df <- as.data.frame(print(table_one, printToggle = FALSE))
table_one_df <- table_one_df[, c("n", "percent")]
colnames(table_one_df) <- c("观测数量", "百分比")

table_one_df

输出结果表格:

观测数量百分比
性别:男4747.0%
性别:女5353.0%
年龄组:青年3434.0%
年龄组:中年3232.0%
年龄组:老年3434.0%
疾病状态:患病4949.0%
疾病状态:未患病5151.0%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:23:33