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

使用mutate()、across()与Winsorize()缩尾处理数据时遇报错求助

问题解决:Winsorize()函数参数不匹配报错

错误原因

你使用的DescTools 0.99.58版本中,Winsorize()没有probs参数,该参数是后续版本新增的。你传入的probs属于未定义参数,触发了报错;na.rm参数是存在的,但由于probs的错误导致整体参数解析失败,因此被一同标记为未使用参数。

解决方案

根据你的需求(对drat、qsec列进行1%/99%缩尾处理),提供两种适配该版本的写法:

方案1:使用trim参数(适用于上下缩尾比例相同的场景)

trim参数指定单侧缩尾比例,设置为0.01即可同时修剪上下1%的极值:

library(tidyverse)
library(DescTools)

mtcars <- as_tibble(mtcars)
mtcars <- mtcars %>% 
  mutate(across(c(drat, qsec), ~Winsorize(., trim = 0.01, na.rm = TRUE)))

方案2:手动计算分位数后传入minval/maxval(适用于上下缩尾比例不同的场景)

如果需要自定义上下分位数比例,可先计算对应分位数,再传入minval和maxval指定缩尾阈值:

library(tidyverse)
library(DescTools)

mtcars <- as_tibble(mtcars)
mtcars <- mtcars %>% 
  mutate(across(c(drat, qsec), function(x) {
    # 计算1%和99%分位数
    quantiles <- quantile(x, probs = c(0.01, 0.99), na.rm = TRUE)
    # 传入分位数作为缩尾阈值
    Winsorize(x, minval = quantiles[1], maxval = quantiles[2], na.rm = TRUE)
  }))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 12:40:06