As funções que eu estou familiarizado incluem a escala da base R, a nova escala do ARM.
Talvez a melhor maneira seja usar alguma variante de apply, especificando uma ou mais variáveis para usar como variáveis de agrupamento.
r
standardization
centering
Michael Bishop
fonte
fonte
Respostas:
Aqui está uma possível solução plyr . Observe que ele depende da
transform()
função base .(Podemos verificar se funciona como esperado com, por exemplo,
with(subset(my.df, sex=="F" & group=="A"), scale(x))
)Basicamente, o segundo argumento descreve como "dividir" os dados; o terceiro argumento, que função aplicar a cada pedaço. O acima irá anexar uma variável
x.std
ao data.frame. Usex
se você deseja substituir sua variável original pela variável em escala.fonte
fonte
Aqui está uma solução data.table . É definitivamente mais rápido que plyr (relevante apenas para grandes conjuntos de dados). Talvez mais tarde eu faça um exemplo de dplyr.
(Sim, redescobri uma pergunta que fiz anos atrás, quando eu era R noob;)
fonte
Você pode usar (entre outros)
tapply
para isso (oplyr
pacote contém muitas outras opções que podem ser mais adequadas para sua situação específica):fonte
Esta resposta é de um white paper de Mahmood Arai. Tem o efeito colateral conveniente de rotular os resultados centralizados com o prefixo "C.":
fonte
Aqui está uma implementação atualizada usando o dplyr do tidyverse .
fonte