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

slice_max函数设置n=0是否不可行?执行后未生效问题咨询

问题原因与解决方法

原因

slice_max()的n参数用于指定每个分组要保留的行数,当你设置n=0时,dplyr不会执行任何行剔除操作——因为要求保留0行的逻辑在分组处理中被默认忽略,最终返回原分组的全部数据,所以df_sliced和原数据框df完全一致。

解决方法

根据你的实际需求选择对应方案:

  • 保留每个分组中n最大的1行:将n设为1,这是slice_max()的常规用法
    df_sliced <- df %>% group_by(group) %>% slice_max(n=1, order_by=n, with_ties = FALSE)
    
  • 剔除每个分组中n最大的行:可以用过滤逻辑直接排除最大值行,或者反向利用排序函数
    # 方案1:过滤掉等于最大值的行
    df_sliced <- df %>% 
      group_by(group) %>% 
      filter(n != max(n))
    # 方案2:用slice_min取除最大值外的所有行
    df_sliced <- df %>% 
      group_by(group) %>% 
      slice_min(n= n(), order_by=desc(n), with_ties = FALSE)
    
  • 生成空数据框(确实要保留0行):直接用filter(FALSE)替代slice_max(n=0)
    df_sliced <- df %>% group_by(group) %>% filter(FALSE)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:01:08