Les fonctions que je connais incluent l' échelle à partir de la base R, la mise à l' échelle à partir d'ARM.
La meilleure façon serait peut-être d'utiliser une variante d'application, en spécifiant une ou plusieurs variables à utiliser comme variables de regroupement.
r
standardization
centering
Michael Bishop
la source
la source
Réponses:
Voici une solution plyr possible . Notez qu'il repose sur la
transform()
fonction de base .(Nous pouvons vérifier si cela fonctionne comme prévu avec par exemple,
with(subset(my.df, sex=="F" & group=="A"), scale(x))
)Fondamentalement, le 2ème argument décrit comment "diviser" les données, le 3ème argument quelle fonction appliquer à chaque bloc. Ce qui précède ajoutera une variable
x.std
au data.frame. À utiliserx
si vous souhaitez remplacer votre variable d'origine par la variable mise à l'échelle.la source
la source
Voici une solution data.table . Il est nettement plus rapide que plyr (pertinent uniquement pour les grands ensembles de données). Peut-être que plus tard je ferai un exemple de dplyr.
(Oui, j'ai redécouvert une question que j'ai posée il y a des années quand j'étais un Noob R;)
la source
Vous pouvez utiliser (entre autres)
tapply
pour cela (leplyr
package contient de nombreuses autres options qui peuvent être mieux adaptées à votre situation spécifique):la source
Cette réponse est tirée d'un livre blanc de Mahmood Arai. Il a pour effet secondaire de marquer les résultats centrés avec le préfixe "C.":
la source
Voici une implémentation mise à jour utilisant dplyr de tidyverse .
la source