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

R dplyr分组统计频数占比后提取每组Freq_left最高的前2行实现方法

问题解决方案

调整逻辑如下:

  • 原生slice_max()默认参数n=1,仅返回每组最高值对应的1条记录,手动指定n=2即可取每组前2条
  • 原有代码中占比计算的nrow(.)写法在不同dplyr版本存在歧义,建议提前存储全量样本数避免计算错误

修正后代码:

library(dplyr)
# 提前存储总样本数,用于占比计算
total_row <- nrow(df)

df %>%
  group_by(node, left) %>%
  summarise(
    Freq_left = n(),
    Prop_left = round(Freq_left / total_row * 100, 1)
  ) %>%
  # 按node分组取Freq_left最高的前2条
  slice_max(Freq_left, n = 2)

运行输出和期望结果完全一致:

# A tibble: 4 × 4
# Groups:   node [2]
  node  left  Freq_left Prop_left
  <chr> <chr>     <int>     <dbl>
1 A     ab            4      30.8
2 A     cc            2      15.4
3 B     xx            3      23.1
4 B     zz            2      15.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:21:00