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

如何用R的dplyr包匹配各国第10位满意度对应的企业名称?

解决方法:用dplyr获取每个国家满意度排名第10的企业

你的问题出在两个关键点:

  1. nth()的order_by参数错误——你需要按满意度分数降序排序,而非Country,这样才能定位到第10高的分数
  2. summarise()是聚合函数,仅能输出分组汇总值,无法直接保留对应的企业名称,得换用可保留整行数据的函数

下面是两种实用的解决方案:

方法1:用slice()提取指定行

先按国家分组,每组内按满意度降序排序,再提取第10行(若组内企业不足10个,会自动返回NA):

ordered_needed_data_ha %>%
  group_by(Country) %>%
  arrange(desc(`Satisfaction Score`), .by_group = TRUE) %>%
  slice(10) %>%
  rename(value = `Satisfaction Score`) %>%
  select(Country, Company, value)

方法2:用row_number()标记排名后筛选

先给每个国家内的企业按满意度降序标注排名,再筛选排名为10的行:

ordered_needed_data_ha %>%
  group_by(Country) %>%
  mutate(rank = row_number(desc(`Satisfaction Score`))) %>%
  filter(rank == 10) %>%
  rename(value = `Satisfaction Score`) %>%
  select(Country, Company, value)

补充说明

  • .by_group = TRUE确保arrange()是在每个国家分组内部完成排序
  • 两种方法都会自动处理企业数量不足10的国家(比如示例中的AL),返回对应NA值
  • 如果存在多个企业满意度分数相同的情况,row_number()会给它们分配不同排名;若想让同分企业共享排名,可替换为min_rank()或dense_rank(),按需调整即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:10:01