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

R中是否有函数可统计分类列特定值的分组计数并新增至数据框

报错原因

你使用的aggregate(subject["math"] ~ student, data = df, length)存在语法逻辑错误:你试图筛选subject为math的条目再计数,但公式中subject["math"]无法正确提取对应值,最终触发变量长度不匹配的报错。

实现方案

方法1:base R 单行实现(无需额外安装包)

使用ave函数可直接完成分组计算,且结果会自动匹配回原数据框的对应行:

df$`total 'math'` <- ave(df$subject == "math", df$student, FUN = sum)

逻辑说明:df$subject == "math"会生成布尔值向量,按学生分组求和时,布尔值TRUE会被识别为1、FALSE为0,求和结果就是对应学生的math科目累计出现次数。

方法2:dplyr 写法可读性更强

如果你习惯tidyverse生态,用分组+新增列的逻辑更直观:

library(dplyr)
df <- df %>%
  group_by(student) %>%
  mutate(`total 'math'` = sum(subject == "math")) %>%
  ungroup()

注意:包含特殊字符的列名需要用反引号包裹,避免R解析报错。

两种方案运行后得到的结果和你给出的预期输出完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:03