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

R语言:如何按Name分组对Score区间的Frequency求和并重构DataFrame?

R语言分组汇总并重分类Score的简便方法

你的需求可以通过两种简便方式实现,分别基于tidyverse工具链和基础R函数,具体如下:

方法一:使用dplyr包(推荐,代码逻辑清晰)

dplyr是tidyverse生态中用于数据处理的核心包,代码可读性强,适合初学者理解:

# 首次使用需先安装包,后续可注释该行
# install.packages("dplyr")
library(dplyr)

# 处理数据
result <- dat %>%
  # 创建分类列,将Score映射为对应类别
  mutate(Score_Category = case_when(
    Score == 1 ~ "High",
    Score %in% 2:3 ~ "Medium",
    Score %in% 4:5 ~ "Low"
  )) %>%
  # 按Name和新分类列分组
  group_by(Name, Score_Category) %>%
  # 对每组的Frequency求和
  summarise(Total_Frequency = sum(Frequency), .groups = "drop")

运行后得到的result即为目标DataFrame,其中.groups = "drop"用于取消分组状态,避免后续操作受分组影响。

方法二:使用基础R函数(无需额外安装包)

如果不想安装第三方包,可以用基础R的cut和aggregate函数完成:

# 用cut函数将Score划分为指定区间并命名
dat$Score_Category <- cut(
  dat$Score,
  breaks = c(0, 1, 3, 5),  # 划分区间:0-1、1-3、3-5
  labels = c("High", "Medium", "Low"),  # 对应区间的类别名称
  include.lowest = TRUE  # 确保Score=1被包含在第一个区间
)

# 按Name和分类列分组,对Frequency求和
result_base <- aggregate(Frequency ~ Name + Score_Category, data = dat, sum)

两种方法最终得到的结果一致,示例输出如下:

Name Score_Category Frequency
1    A           High         9
2    B           High         3
3    C           High        20
4    A         Medium        21
5    B         Medium        17
6    C         Medium         6
7    A            Low        10
8    B            Low        10
9    C            Low         4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:00:16