varias superponer studio lineas hacer graficos graficas como r s

studio - superponer graficas en r



Cómo obtener estadísticas de resumen por grupo (9)

Acabo de encontrar un maravilloso R tables paquetes. Puede tabular datos por tantas categorías como desee y calcular múltiples estadísticas para múltiples variables: ¡realmente es increíble!

¡Pero espera hay mas! El paquete tiene funciones para generar código LaTeX para sus tablas para una fácil importación a sus documentos.

Estoy tratando de obtener estadísticas de resumen múltiples en R-plus / S plus agrupadas por columna categórica en una sola toma. Encontré algunas funciones, pero todas hacen una estadística por llamada, como agregar.

data <- c(62, 60, 63, 59, 63, 67, 71, 64, 65, 66, 68, 66, 71, 67, 68, 68, 56, 62, 60, 61, 63, 64, 63, 59) grp <- factor(rep(LETTERS[1:4], c(4,6,6,8))) df <- data.frame(group=grp, dt=data) mg <- aggregate(df$dt, by=df$group, FUN=mean) mg <- aggregate(df$dt, by=df$group, FUN=sum)

Lo que estoy buscando es obtener estadísticas múltiples para el mismo grupo como mean, min, max, std, ... etc en una sola llamada, ¿es eso factible?



Hay muchas formas diferentes de hacerlo, pero me gustaría describeBy en el paquete de psych :

describeBy(df$dt, df$group, mat = TRUE)


Pondré mis dos centavos por tapply() .

tapply(df$dt, df$group, summary)

Puede escribir una función personalizada con las estadísticas específicas que desea reemplazar el resumen.


Primero, depende de su versión de R. Si pasó el 2.11, puede usar agregar varias funciones de resultados (resumen, por ejemplo, o su propia función). Si no, puedes usar la respuesta hecha por Justin.


Usando el paquete Purrr de Hadley Wickham, esto es bastante simple. Use split para dividir el data_frame pasado en grupos, luego use map para aplicar la función de summary a cada grupo.

library(purrr) df %>% split(.$group) %>% map(summary)


después de 5 largos años, estoy seguro de que no se recibirá mucha atención por esta respuesta, pero aún para completar todas las opciones, aquí está el que tiene data.table

library(data.table) setDT(df)[ , list(mean_gr = mean(dt), sum_gr = sum(dt)) , by = .(group)] # group mean_gr sum_gr #1: A 61 244 #2: B 66 396 #3: C 68 408 #4: D 61 488


eche un vistazo al paquete plyr . Específicamente, ddply

ddply(df, .(group), summarise, mean=mean(dt), sum=sum(dt))


El paquete dplyr podría ser una buena alternativa a este problema:

library(''dplyr'') df %>% group_by(group) %>% summarize(mean=mean(dt), sum=sum(dt))