winsorize

New in version 1.30.3.

语法

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
winsorize(x, 0.1);
[2,2,3,4,5,6,7,8,9,9]

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

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


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

$ winsorize(x, 0.1);
[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');
[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');
[2,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,2]