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

R语言数据框:按Name分组求和Rank并排序的实现方法

解决方法:正确分组聚合+排序

你的代码里有几个小问题导致没得到想要的结果,我来帮你修正:

问题分析

  1. 分组变量错误:你写的group_by(Var1),但你的数据框里并没有Var1列,应该是按name分组。
  2. 聚合函数误用:mutate()会保留原数据的所有行,只是给每个分组添加新列;而你需要的是每个name只保留一行的汇总结果,应该用summarise()(或summarize(),两者等价)。
  3. 列名引用错误:你用了Freq2,但你的数据里只有rank列是已经计算好的翻倍后的值,应该对rank求和。
  4. 缺少排序步骤:你需要对最终的final_rank按降序排序,所以要加上arrange()函数。

正确代码

library(dplyr)

# 先确认rank列已经正确计算(你原来的代码是对的)
orientadores$rank <- orientadores$Freq * ifelse(orientadores$Var2=="B",2,1)

# 分组求和+排序
orientadores_final <- orientadores %>%
  group_by(name) %>%
  summarise(final_rank = sum(rank)) %>%
  arrange(desc(final_rank)) %>%
  ungroup() # 可选,但分组后建议取消分组避免后续操作出错

# 查看结果
head(orientadores_final)

运行结果验证

执行后你会得到和预期完全一致的结果:

# A tibble: 4 × 2
  name    final_rank
  <chr>        <dbl>
1 Author4          7
2 Author1          5
3 Author3          3
4 Author2          2

简单解释下关键步骤:

  • group_by(name):按作者名完成分组,确保后续计算都是基于每个作者的独立组
  • summarise(final_rank = sum(rank)):对每个分组的rank值求和,生成仅包含作者名和最终排名的汇总行
  • arrange(desc(final_rank)):按最终排名从高到低排序,满足你的结果顺序需求
  • ungroup():取消分组状态,避免后续对这个数据框操作时受到分组限制(推荐添加)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:55:58