Znane mi funkcje obejmują skalowanie od podstawy R, przeskalowanie od ARM.
Być może najlepszym sposobem byłoby użycie jakiegoś wariantu zastosowania, określając jedną lub więcej zmiennych do zastosowania jako zmienne grupujące.
r
standardization
centering
Michael Bishop
źródło
źródło
Odpowiedzi:
Oto możliwe plyr rozwiązanie. Zauważ, że opiera się on na
transform()
funkcji podstawowej .(Możemy sprawdzić, czy działa zgodnie z oczekiwaniami, np.
with(subset(my.df, sex=="F" & group=="A"), scale(x))
)Zasadniczo drugi argument opisuje, jak „podzielić” dane, trzeci argument to, jaką funkcję zastosować do każdej porcji. Powyższe spowoduje dołączenie zmiennej
x.std
do data.frame. Użyj,x
jeśli chcesz zastąpić oryginalną zmienną skalowaną.źródło
źródło
Oto rozwiązanie data.table . Jest zdecydowanie szybszy niż plyr (dotyczy tylko dużych zestawów danych). Może później zrobię lepszy przykład.
(Tak, odkryłem pytanie, które zadałem lata temu, kiedy byłem R noobem;)
źródło
Możesz do tego użyć (między innymi)
tapply
(plyr
pakiet zawiera wiele innych opcji, które mogą być lepiej dostosowane do konkretnej sytuacji):źródło
Ta odpowiedź pochodzi z białej księgi Mahmood Arai. Ma wygodny efekt uboczny, oznaczając wyśrodkowane wyniki przedrostkiem „C.”:
źródło
Oto zaktualizowana implementacja wykorzystująca dplyr z tidyverse .
źródło