---
source_url: https://docs.dolphindb.cn/zh/funcs/w/winsorize.html
fetched_at: 2026-05-19T09:44:00Z
category: funcs
title: winsorize
sha1: e4e5c3bd66ab7ed2f7cd5223474c430d25bd04a3
---

# winsorize

## 语法

`winsorize(X, limit, [inclusive=true], [nanPolicy='upper'])`

## 详情

将向量 *X* 中指定百分比的极值掩盖。将第 (limits [0]) 个最低值设置为第 (limits [0])
个百分位数，将第 (limits [1]) 个最高值设置为第 (1-limits [1]) 个百分位数。

`winsorize!` 是 `winsorize`
的原地改变版本。

## 参数

**X** 是一个向量。

**limit** 是一个标量或两个元素组成的向量，表示相对于未屏蔽数据的数目，数组的每一侧要掩盖的百分比，取值为0到1之间。若为标量，表示每侧均要掩盖的百分比。若
*X* 有 n 个元素（包括 NULL值 ），第 (n \* limit[0]) 个最小的元素和第 (n \* limit[1])
个最大的元素被屏蔽，未屏蔽的数据总数为 n \*(1-sum(limit))。若 *limit* 中一个元素为0，表示此侧不掩盖。

**inclusive** 是一个标量或两个元素组成的向量，表示在每一侧被屏蔽的数据数量应被截断（true）还是四舍五入（false）。

**nanPolicy** 是一个字符串，表示如何处理 NULL 值。可取以下值，默认值为 'upper'。

- 'upper'：将 NULL 值视为最大值进行掩盖。
- 'lower'：将 NULL 值视为最小值进行掩盖。
- 'raise'：抛出异常。
- 'omit'：不掩盖 NULL 值。

## 返回值

一个与 *X* 长度相同的向量。

## 例子

```dolphindb
x=1..10
// output
winsorize(x, 0.1);
[2,2,3,4,5,6,7,8,9,9]

winsorize(x, 0.12 0.17);
// output
[2,2,3,4,5,6,7,8,9,9]

winsorize(x, 0.12 0.17, inclusive=false);
// output
[2,2,3,4,5,6,7,8,8,8]

x=1..20;
x[19:]=NULL;
x;
// output
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,]

winsorize(x, 0.1);
// output
[3,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18]

winsorize(x, 0.1, nanPolicy='upper');
// output
[3,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18]

winsorize(x, 0.1, nanPolicy='lower');
// output
[2,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,2]
```
