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

R语言table()函数无法汇总男女学生总人数问题(新手求助)

R语言学生性别频数表生成修正方案

问题根源

原代码中总人数统计错误的核心原因是table(data$GENDER)返回的是按性别分组的二维频数向量,会分别存储男性、女性的人数,不是单一的总人数汇总值;该对象长度为2,和后续生成的长度为1的男性人数、女性人数对象用cbind()合并时会出现维度适配问题,最终输出的表格不符合预期。
另外原代码还有一处拼写错误:读入csv文件的函数是read.csv2(),代码中写的read.cvs2()属于拼写错误(把csv错写为cvs),运行时会直接报“找不到函数”的错误。

修正方法

统计对应人数不需要反复调用table(),直接用逻辑判断求和的写法更简洁,还能自动处理缺失值,避免统计偏差:

  • 学生总人数:统计性别列非缺失的样本量,用sum(!is.na(data$GENDER))
  • 男性学生人数:统计性别编码为1的样本量,用sum(data$GENDER == 1, na.rm = TRUE)
  • 女性学生人数:统计性别编码为2的样本量,用sum(data$GENDER == 2, na.rm = TRUE)

修正后完整代码

# 读入问卷数据
data <- read.csv2("Questionnaire")

# 计算三个统计指标
total_num <- sum(!is.na(data$GENDER))
male_num <- sum(data$GENDER == 1, na.rm = TRUE)
female_num <- sum(data$GENDER == 2, na.rm = TRUE)

# 生成规范的频数表
freqTab <- data.frame(
  指标 = c("学生总人数", "男性学生人数", "女性学生人数"),
  人数 = c(total_num, male_num, female_num)
)

# 打印查看结果
print(freqTab)

额外说明

如果数据集不存在性别缺失值,也可以用nrow(data)直接统计总行数得到总人数,或者用sum(table(data$GENDER))对性别分组频数求和得到总人数,两种写法结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:24:52