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

R语言中如何对含行列变量的两个数据表进行合并与聚合?

R实现多份测验成绩表按科目分组聚合

你需要的「跨表合并所有科目+按科目对正确/错误数求和」的操作,核心逻辑是先纵向拼接所有读入的成绩表,再按Subject列分组对数值指标求和,以下是两种常用实现方式:

方法1:tidyverse 方案(代码易读,适合日常批量处理)

# 加载数据处理包,未安装可先运行 install.packages("dplyr")
library(dplyr)

# 构造示例中的两份测验成绩表
quiz1 <- data.frame(
  Subject = c("Math", "Chemistry"),
  Correct = c(9, 7),
  Incorrect = c(1, 6)
)
quiz2 <- data.frame(
  Subject = c("Math", "Biology"),
  Correct = c(4, 3),
  Incorrect = c(3, 6)
)

# 执行合并聚合
agg_result <- bind_rows(quiz1, quiz2) %>% 
  # 若需要保留科目在各表中首次出现的顺序,取消下面一行的注释即可
  # mutate(Subject = factor(Subject, levels = unique(Subject))) %>% 
  group_by(Subject) %>% 
  summarise(
    Correct = sum(Correct),
    Incorrect = sum(Incorrect)
  ) %>% 
  ungroup()

运行后输出的结果和预期完全匹配:

# A tibble: 3 × 3
  Subject   Correct Incorrect
  <chr>       <dbl>     <dbl>
1 Math           13         4
2 Chemistry       7         6
3 Biology         3         6

后续如果有更多测验表,只需要把所有从Excel读入的表存入列表,传入bind_rows()即可一次性完成拼接,不需要手动逐张添加。

方法2:Base R 方案(无需安装第三方包)

如果不想依赖额外扩展包,用R自带功能即可实现:

# 纵向拼接两张成绩表
merged_df <- rbind(quiz1, quiz2)
# 按Subject分组对数值列求和
agg_result <- aggregate(cbind(Correct, Incorrect) ~ Subject, data = merged_df, FUN = sum)
# 若需要匹配科目首次出现的顺序,取消下面一行注释即可
# agg_result <- agg_result[match(unique(merged_df$Subject), agg_result$Subject),]

运行结果:

Subject Correct Incorrect
1      Math      13         4
2 Chemistry       7         6
3   Biology       3         6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:18:14