winsorize

语法

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

参数

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 中指定百分比的极值掩盖。将第 (limits [0]) 个最低值设置为第 (limits [0]) 个百分位数,将第 (limits [1]) 个最高值设置为第 (1-limits [1]) 个百分位数。

winsorize!winsorize 的原地改变版本。

例子

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]