Las funciones que estoy familiarizado con incluir la escala de la base R, cambiar la escala de BRAZO.
Tal vez la mejor manera sería utilizar alguna variante de aplicar, especificando una o más variables a utilizar como las variables de agrupación.
Las funciones que estoy familiarizado con incluir la escala de la base R, cambiar la escala de BRAZO.
Tal vez la mejor manera sería utilizar alguna variante de aplicar, especificando una o más variables a utilizar como las variables de agrupación.
Aquí hay una posible plyr solución. Tenga en cuenta que se basa en la base transform()
función.
my.df <- data.frame(x=rnorm(100, mean=10),
sex=sample(c("M","F"), 100, rep=T),
group=gl(5, 20, labels=LETTERS[1:5]))
library(plyr)
ddply(my.df, c("sex", "group"), transform, x.std = scale(x))
(Podemos comprobar si funciona como se espera, por ejemplo, with(subset(my.df, sex=="F" & group=="A"), scale(x))
)
Básicamente, el 2º argumento describe cómo "split" de los datos, el 3er argumento cuál es la función de aplicar a cada fragmento. El de arriba va a añadir una variable x.std
a los datos.marco. Uso x
si desea reemplazar el original de la variable de la escala.
Aquí está una de datos.tabla de solución. Es definitivamente más rápido que plyr (relevante sólo para grandes conjuntos de datos). Tal vez más adelante voy a hacer un dplyr ejemplo.
# generate example data
raw.data <- data.frame( outcome = c(rnorm(500, 100, 15), rnorm(500, 110, 12)),
group = c(rep("a", 500), rep("b", 500)))
library(data.table)
# convert dataframe to data.table
raw.data <- data.table(raw.data, key = "group")
# create group standardized outcome variable
raw.data[ , group_std_outcome := (outcome - mean(outcome, na.rm = TRUE)) /
sd(outcome, na.rm = TRUE), "group"]
(Sí, he redescubierto una pregunta que le hice hace años, cuando yo era un R noob ;)
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.