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

如何优化R语言中计算收入Top10人群主流信用卡数量均值的代码

优化方案说明

原代码通过order()对整个收入列排序后取前10,当数据集规模较大时会产生不必要的全量排序开销,以下是两种更高效的优化方法:

方法1:用dplyr包的top_n()函数(简洁高效)

top_n()可以直接筛选收入最高的前10行,无需对整个数据集排序,代码更直观且性能更优:

library(dplyr)

round(mean(top_n(creditcard, 10, income)$majorcards))
  • 优势:语法简洁易读,内部采用高效的筛选逻辑,避免全量排序带来的资源消耗,尤其适合大数据场景。

方法2:基础R的部分排序(无需额外依赖)

利用sort()的partial参数仅对前10大的收入值进行排序,减少计算量,同时能处理收入并列的边界情况:

# 获取收入排名第10位的阈值
income_cutoff <- sort(creditcard$income, decreasing = TRUE, partial = 10)[10]
# 筛选所有收入≥该阈值的行(覆盖并列第10的情况)
top10_group <- creditcard[creditcard$income >= income_cutoff, ]
# 严格取前10行计算平均值并取整
round(mean(head(top10_group$majorcards, 10)))
  • 优势:无需加载第三方包,部分排序的计算量远小于全量排序;同时解决了原代码可能遗漏并列收入行的问题(比如多个用户收入同为第10名时,原代码只会取前10个位置的行)。

原代码的潜在问题

原代码在存在收入并列的场景下,可能会排除掉同样属于前10收入梯队的用户,上述优化方法能更好地处理这类边界情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:30:48