11 votos

Automáticamente el producto Resumen por variable factor de R

Tengo un dataframe como la 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 de dividir por los niveles de la simulación de la variable. Por ejemplo, me gustaría que la media de temp para la simulación==1 y simulación==2, y lo mismo para la desviación estándar.

Por el 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 hacerlo en R, pero no puedo encontrarlo. He intentado usar summary(df ~ simulation), pero que no produce nada útil.

18voto

DavLink Puntos 101

Compruebe hacia fuera el by() o tapply() funciones. Básicamente,

tapply(y, g, mean)

te dará la media de y por niveles de g . Si desea obtener un data.frame de las medidas agregadas resultantes, utilice aggregate() .

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

3voto

jnewton Puntos 290

paquete de doBy tiene un summaryBy función que tiene un fórmula basado en sintaxis como la conoces.

Además, creo que eso habría sido mejor pregunta en stackexchange.

i-Ciencias.com

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.

Powered by:

X