我试图一次归一化矩阵数据的所有行(范围为0和1),但是我不知道该怎么做。
例如,我想规范化每个“ obs1”,“ obs2”,“ obs3”。因此,将使用每个“ obs1”,“ obs2”,“ obs3”的最小值,最大值和总和。
我的数据格式是

`mydata

             a        b        c         d         e
obs1   8.15609  11.5379  11.1401   8.95186   7.95722
obs2 339.89800 856.3470 691.3490 590.28600 543.67200
obs3   2.12776  46.4561 136.8860 118.09100 119.86400


`

另外,当我搜索执行此操作时,人们使用了“ function()”。什么时候/什么用?

非常感谢您的提前帮助! :)

最佳答案

要对每一行进行归一化,可以使用apply,然后从每一列中减去最小值,然后除以最大值和最小值之间的差:

t(apply(mydata, 1, function(x)(x-min(x))/(max(x)-min(x))))


给你

              a         b         c         d         e
obs1 0.05553973 1.0000000 0.8889038 0.2777796 0.0000000
obs2 0.00000000 1.0000000 0.6805144 0.4848262 0.3945675
obs3 0.00000000 0.3289472 1.0000000 0.8605280 0.8736849


发生的事情是您应用了该功能

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


到数据框的每一行。

10-08 18:40