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

R语言如何按变量自定义选TOP10行并强制保留指定条目

解决方案

在原有代码基础上调整排名逻辑即可:排除需要强制保留的型号A,仅对其余型号按销售额降序取TOP9,将型号A固定在第10位,剩余所有型号汇总为Others,修改后的完整代码如下:

df <- data.frame (model  = c("A","B","C","D","E","F","G","H","I","J","K","L","M","N"),
                 sale = c(100,300,140,456,345,456,456,780,40,560,560,456,350,500),
                 cost = c(1340,330,440,443,365,437,478,700,30,460,160,456,650,100))


# 输出结构:非A型号销售额TOP9 + 强制保留的型号A + Others汇总
order <- df %>%
  type.convert(as.is = TRUE) %>%
  mutate(
    # 非A型号按销售额降序计算排名,型号A固定占位第10位
    pos = ifelse(model == "A", 10, 
                 row_number(desc(sale[model != "A"]))[match(model, model[model != "A"])]),
    # 非A型号排名超出前9的统一归为Others,型号A保留原名称
    model = ifelse(model != "A" & pos > 9, 'Others', model),
    # Others类别统一固定在第11位
    pos = ifelse(model == 'Others', 11, pos)
  ) %>%
  group_by(model, pos) %>%
  summarise(cost= sum(cost), sale= sum(sale), .groups = 'drop') %>%
  arrange(pos)

运行代码后输出结构完全符合要求:非A型号按销售额降序展示前9位,型号A固定在第10位,剩余所有型号汇总为Others在第11位展示。如果后续需要强制保留其他型号,只需修改判断条件里的model == "A"为对应型号即可,逻辑通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:39:41