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

R语言如何将dataframe每行与aggregate聚合结果按分组对比

R语言实现分组聚合结果匹配与标签生成

方法1:基于现有aggregate结果的基础R实现

你已生成的agg_df默认列名为Group.1(存储分组队伍名)和x(存储分组平均得分),首先做列名修正后匹配回原数据,再做值对比即可:

# 修正聚合表列名,便于匹配
colnames(agg_df) <- c("team", "team_mean_pts")
# 按team字段将分组均值匹配到原数据每一行
df <- merge(df, agg_df, by = "team", all.x = TRUE)
# 嵌套ifelse判断生成performance列
df$performance <- ifelse(
  df$pts > df$team_mean_pts, "over",
  ifelse(df$pts < df$team_mean_pts, "under", "average")
)
# 可选:删除临时增加的均值列
df$team_mean_pts <- NULL

方法2:更简洁的dplyr实现

不需要单独生成聚合表,分组后直接计算判断,代码可读性更高:

# 加载dplyr包(未安装先执行install.packages("dplyr"))
library(dplyr)
df <- df %>%
  # 按team分组
  group_by(team) %>%
  # 分组内计算均值并对比生成标签
  mutate(performance = case_when(
    pts > mean(pts) ~ "over",
    pts < mean(pts) ~ "under",
    TRUE ~ "average"
  )) %>%
  # 取消分组,避免后续操作受分组属性影响
  ungroup()

最终输出效果示例

teamptsrebsperformance
a58under
a88over
b149over
b183over
b58under
c77average
c74average

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:02