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

关于forcats::fct_lump_prop()的w与prop参数用法及阈值疑问

解决fct_lump_prop()的w和prop参数困惑

首先明确核心问题:你之前调用fct_lump_prop()时没有指定w = var2参数,导致函数默认按观测计数(而非var2的权重)计算类别占比——此时a和b各有3条观测,占比都是50%,自然无法实现只合并b的效果。

参数逻辑解析

  • w:必须传入你用来计算权重的变量(这里是var2),函数才会按每个类别的权重总和计算占比,而不是按观测数量。
  • prop:函数会从权重占比最大的类别开始保留,直到保留的类别总权重占比≥prop。简单说,只要保留的最大类别单独的权重占比≥prop,就只会保留这个类别,其他都合并为Others。

针对你的数据的解决方案

你的数据中,a的总权重是0.2+0.3+0.2=0.7,b的总权重是0.1*3=0.3,总权重和为1。要只保留a,只需设置prop为大于0.3且小于0.7的任意值(比如0.6),同时指定w=var2:

library(forcats)
library(tibble)

df <- tibble(var1 = c(rep("a", 3), rep("b", 3)),
             var2 = c(0.2, 0.3, 0.2, 0.1, 0.1, 0.1))

# 生成目标结果
df <- df %>%
  mutate(fct = fct_lump_prop(var1, prop = 0.6, w = var2))

运行后得到你想要的结果:

# A tibble: 6 × 3
  var1   var2 fct  
  <chr> <dbl> <fct>
1 a       0.2 a    
2 a       0.3 a    
3 a       0.2 a    
4 b       0.1 Others
5 b       0.1 Others
6 b       0.1 Others

你之前尝试无效的原因

  • 未指定w=var2时,函数默认每个观测权重为1,a和b的计数占比都是50%:
    • 当prop在0.3-0.6之间时,两个类别的累加占比(50%或100%)都≥prop,所以不会合并;
    • 当prop=0.7时,单个类别的占比(50%)<0.7,所有类别都被合并为Others。

内容的提问来源于stack exchange,提问作者Michaël

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:50