在R中进行范围标准化(从0到1)

52

可能重复:
在R中将一系列缩放到两个点之间的比例

有没有人知道一个R函数可以对向量执行范围标准化?我想将变量转换为0到1的比例尺,同时保留等级顺序和值之间相对分离的大小。

只是为了明确,我不是想通过均值居中并按SD缩放来标准化变量,就像在函数scale()中所做的那样。

我尝试了包“dprep”中的函数mmnorm()和rangenorm(),但这些似乎不能胜任工作。


4
与 https://dev59.com/n2035IYBdhLWcg3wW-v0#5468527 相同。 - Andrie
它与stats.stackexchange上的这个问题非常相似:http://stats.stackexchange.com/q/1112/442 - Henrik
6
不要删除它,只需关闭它。它与其他问题相关联,因此对使用搜索功能的人可能有用。 - Joshua Ulrich
这被称为“缩放”。缩放可以通过各种分母进行,不仅仅是变量的标准差;因此并不仅仅是R内置函数“scale()”的方式。不可否认,如果内置的“scale()”被参数化以允许最小-最大缩放或其他可能性,那将更好。 - smci
1个回答

100
s = sort(rexp(100))

range01 <- function(x){(x-min(x))/(max(x)-min(x))}

range01(s)

  [1] 0.000000000 0.003338782 0.007572326 0.012192201 0.016055006 0.017161145
  [7] 0.019949532 0.023839810 0.024421602 0.027197168 0.029889484 0.033039408
 [13] 0.033783376 0.038051265 0.045183382 0.049560233 0.056941611 0.057552543
 [19] 0.062674982 0.066001242 0.066420884 0.067689067 0.069247825 0.069432174
 [25] 0.070136067 0.076340460 0.078709590 0.080393512 0.085591881 0.087540132
 [31] 0.090517295 0.091026499 0.091251213 0.099218526 0.103236344 0.105724733
 [37] 0.107495340 0.113332392 0.116103438 0.124050331 0.125596034 0.126599323
 [43] 0.127154661 0.133392300 0.134258532 0.138253452 0.141933433 0.146748798
 [49] 0.147490227 0.149960293 0.153126478 0.154275371 0.167701855 0.170160948
 [55] 0.180313542 0.181834891 0.182554291 0.189188137 0.193807559 0.195903010
 [61] 0.208902645 0.211308713 0.232942314 0.236135220 0.251950116 0.260816843
 [67] 0.284090255 0.284150541 0.288498370 0.295515143 0.299408623 0.301264703
 [73] 0.306817872 0.307853369 0.324882091 0.353241217 0.366800517 0.389474449
 [79] 0.398838576 0.404266315 0.408936260 0.409198619 0.415165553 0.433960390
 [85] 0.440690262 0.458692639 0.464027428 0.474214070 0.517224262 0.538532221
 [91] 0.544911543 0.559945121 0.585390414 0.647030109 0.694095422 0.708385079
 [97] 0.736486707 0.787250428 0.870874773 1.000000000

添加...将允许您在计算时通过na.rm = T来省略缺失值(它们仍将出现在结果中):

range01 <- function(x, ...){(x - min(x, ...)) / (max(x, ...) - min(x, ...))}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接