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

如何基于关联累计值对DataFrame列排序并合并唯一值?

处理First_Name折叠与排序的解决方案

没问题,我来帮你实现把First_Name折叠为唯一值,并按累计频次排序的需求!下面用两种方法来完成,你可以根据自己的习惯选择:

方法一:使用基础R实现

基础R里的aggregate()函数可以快速完成分组求和,再结合order()排序:

# 先计算每个First_Name的累计Frequency
sum_df <- aggregate(Frequency ~ First_Name, data = df, sum)
# 按累计Frequency降序排序(想要升序就去掉负号)
sum_df_sorted <- sum_df[order(-sum_df$Frequency), ]

# 查看结果
sum_df_sorted

运行后会得到这样的结果:

First_Name Frequency
1       John        23
2       Alex        10
3      James         9

方法二:使用dplyr包实现(更简洁直观)

如果你习惯用tidyverse系列的工具,dplyr的链式语法会更清晰:
首先确保已经安装并加载dplyr包:

# 没安装的话先运行这个
# install.packages("dplyr")
library(dplyr)

然后执行分组、求和、排序操作:

df_sorted <- df %>%
  group_by(First_Name) %>%
  summarise(Total_Frequency = sum(Frequency)) %>% # 计算累计频次,自定义列名
  arrange(desc(Total_Frequency)) # 降序排序,升序用arrange(Total_Frequency)

# 查看结果
df_sorted

输出结果如下:

# A tibble: 3 × 2
  First_Name Total_Frequency
  <chr>                <dbl>
1 John                    23
2 Alex                    10
3 James                    9

解释一下关键步骤:

  • group_by(First_Name):把数据按First_Name分组,每个名字为一组
  • summarise():对每组的Frequency求和,生成新的累计频次列
  • arrange(desc(Total_Frequency)):按照累计频次从高到低排序,去掉desc()就是从低到高排序

这样处理后,First_Name就都是唯一值,并且按累计频次排好序啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:56:33