Las funciones con las que estoy familiarizado incluyen escalar desde la base R, reescalar desde ARM.
Quizás la mejor manera sería usar alguna variante de apply, especificando una o más variables para usar como variables de agrupación.
r
standardization
centering
Michael Bishop
fuente
fuente
Respuestas:
Aquí hay una posible solución de capas . Tenga en cuenta que se basa en la
transform()
función base .(Podemos verificar si funciona como se espera con, por ejemplo,
with(subset(my.df, sex=="F" & group=="A"), scale(x))
)Básicamente, el segundo argumento describe cómo "dividir" los datos, el tercer argumento qué función aplicar a cada fragmento. Lo anterior agregará una variable
x.std
al data.frame. Úselox
si desea reemplazar su variable original por la escala.fuente
fuente
Aquí hay una solución data.table . Definitivamente es más rápido que plyr (relevante solo para grandes conjuntos de datos). Quizás más tarde haga un ejemplo de dplyr.
(Sí, redescubrí una pregunta que hice hace años cuando era un novato R;)
fuente
Puede usar (entre otros)
tapply
para esto (elplyr
paquete contiene muchas otras opciones que pueden ser más adecuadas para su situación específica):fuente
Esta respuesta es de un libro blanco de Mahmood Arai. Tiene el conveniente efecto secundario de etiquetar los resultados centrados con el prefijo "C":
fuente
Aquí hay una implementación actualizada usando dplyr de tidyverse .
fuente