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

R语言:如何按group_by未包含的列n1降序排列结果?

解决按n1列降序排列的问题

你的代码存在两个关键问题,导致无法实现按n1降序排列的需求:

  • 第二次分组执行summarize时,没有保留n1列,后续无法基于该列排序
  • 即使n1列存在,arrange(n1)默认是升序排列,降序需要显式指定

以下是修正后的完整代码:

dummy_data <- data.frame(
      a = sample(letters[1:3], 100, replace = TRUE),
      b = sample(LETTERS[1:2], 100, replace = TRUE),
      c = sample(1:2, 100, replace = TRUE),
      NO = sample(1:10, 100, replace = TRUE)
    )

# 修正后的数据处理流程
result <- dummy_data %>%
  group_by(a, b) %>%
  mutate(n1 = n_distinct(NO)) %>%
  filter(n1 > 3) %>%
  group_by(a, b, c) %>%
  summarize(
    n2 = n_distinct(NO),
    n1 = first(n1)  # 保留n1列,同一(a,b)分组下的n1值完全一致
  ) %>%
  arrange(desc(n1))  # 按n1列降序排列

说明

  • 用first(n1)保留n1列:因为每个(a,b,c)分组都隶属于同一个(a,b)分组,对应的n1值完全相同,用unique(n1)或max(n1)也能达到同样效果
  • arrange(desc(n1)):通过desc()函数指定降序规则,实现结果按n1从大到小排列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:52:15