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?
Además de describeBy
, el paquete doBy
es otra opción. Proporciona gran parte de la funcionalidad del RESUMEN SAS PROC. Detalles: http://www.statmethods.net/stats/descriptives.html
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))