如何在R中按分组生成含对错答案统计的DataFrame
R语言:按分类统计正误及总答题数
问题描述
现有一个包含两列的DataFrame:
- 第一列是分类(如"S1""S2")
- 第二列用1表示正确答案,0表示错误答案
示例数据:
| SYSTEM | Q1 |
|---|---|
| S1 | 0 |
| S1 | 1 |
| S2 | 1 |
| S2 | 0 |
| S2 | 1 |
需要生成如下结构的目标DataFrame:
| System | Correct answers | Wrong answers | Total answers |
|---|---|---|---|
| S1 | 1 | 1 | 2 |
| S2 | 2 | 1 | 3 |
解决方案
方法1:使用dplyr包(tidyverse生态)
这是分组统计最直观的方式,步骤清晰:
# 未安装dplyr的话先运行:install.packages("dplyr") library(dplyr) # 构造示例数据 df <- data.frame( SYSTEM = c("S1", "S1", "S2", "S2", "S2"), Q1 = c(0, 1, 1, 0, 1) ) # 生成目标表格 result_df <- df %>% group_by(SYSTEM) %>% summarise( `Correct answers` = sum(Q1 == 1), `Wrong answers` = sum(Q1 == 0), `Total answers` = n() ) %>% rename(System = SYSTEM) # 查看结果 print(result_df)
方法2:使用基础R(无需额外包)
如果不想依赖第三方包,可用aggregate函数实现:
# 构造示例数据 df <- data.frame( SYSTEM = c("S1", "S1", "S2", "S2", "S2"), Q1 = c(0, 1, 1, 0, 1) ) # 分组统计 agg_result <- aggregate(Q1 ~ SYSTEM, data = df, FUN = function(x) { c( Correct = sum(x == 1), Wrong = sum(x == 0), Total = length(x) ) }) # 转换为标准DataFrame并调整列名 result_df <- do.call(data.frame, agg_result) colnames(result_df) <- c("System", "Correct answers", "Wrong answers", "Total answers") # 查看结果 print(result_df)
内容的提问来源于stack exchange,提问作者cat cat
相关产品推荐
相关产品推荐

