J'essaie de normaliser toutes les lignes de ma matrice en même temps dans les plages 0 et 1. Mais je ne sais pas comment le faire .. Par exemple, je souhaite normaliser chaque "obs1", "obs2", "obs3". Ainsi, minimum, maximum et somme de chaque "obs1", "obs2", "obs3" seront utilisés. Mon format de données est,
`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
`
En outre, lorsque j'ai cherché à effectuer cette opération, les utilisateurs ont utilisé "function ()". Quand/pour quoi est-ce utilisé?
Merci beaucoup pour votre aide à l'avance! :)
Pour normaliser chaque ligne, vous pouvez utiliser apply
, puis soustraire le minimum de chaque colonne et diviser par la différence entre le maximum et le minimum:
t(apply(mydata, 1, function(x)(x-min(x))/(max(x)-min(x))))
vous donne
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
Qu'est-ce qui se passe est que vous appliquez la fonction
function(x){
(x-min(x))/(max(x)-min(x))
}
à chaque ligne de votre cadre de données.
for(i in 2:length(mydata[1,])){
mydata[,i] <- prop.table(mydata[,i])
}
La matrice normalisée sera mise à jour dans mydata