Produce automáticamente resumen por variable de factor en R

11

Tengo un marco de datos como el siguiente:

   case simulation temp plank oxygen
1     1          1    8     7     11
2     2          1   16    10     15
...
17   17          2   26    12     17
18   18          2   15     8     12
19   19          2   28    11     21
20   20          2   24     6     14

Me gustaría obtener resúmenes divididos por los niveles de la variable de simulación. Por ejemplo, me gustaría la media de temppara simulación == 1 y simulación == 2, y lo mismo para la desviación estándar.

En este momento estoy usando el siguiente código, que es bastante horrible:

df <- read.csv("data.csv")
attach(df)

# Create subset variables
temp1 = subset(temp, simulation==1)
temp2 = subset(temp, simulation==2)

plank1 = subset(plank, simulation==1)
plank2 = subset(plank, simulation==2)

oxygen1 = subset(oxygen, simulation==1)
oxygen2 = subset(oxygen, simulation==2)

print(sd(temp1))
print(sd(temp2))
print(sd(plank1))
print(sd(plank2))

Estoy seguro de que debe haber una forma automática de hacer esto en R, pero no puedo encontrarlo. He intentado usar summary(df ~ simulation), pero eso no produce nada útil.

robintw
fuente

Respuestas:

17

Echa un vistazo a las funciones by()o tapply(). Básicamente,

tapply(y, g, mean)

le dará la media de ypor niveles de g. Si desea obtener un marco de datos de las medidas agregadas resultantes, use aggregate().

Una solución más elaborada está disponible a través de la summary.formula()función en el paquete Hmisc .

chl
fuente
3

paquete doBy tiene una summaryByfunción que tiene una sintaxis basada en fórmulas como la que probó.

Además, creo que esa pregunta se habría hecho mejor en stackexchange.

fabians
fuente
Gracias. Veré el paquete. Esto es stackexchange, ¿no?
robintw
1
Creo que fabians se refería a Stackoverflow: stackoverflow.com, que es para la programación R, ¿cómo hago algo en las preguntas R? Este lugar es más generalmente sobre estadísticas. Sin embargo, los dos pueden combinarse mucho.
Restablece a Monica - G. Simpson el