Saltar al contenido

Cálculo de subtotales en R

Posterior a de nuestra extensa recopilación de datos solucionamos esta obstáculo que suelen tener ciertos los usuarios. Te brindamos la respuesta y esperamos servirte de gran ayuda.

Solución:

ESTÁ BIEN. Suponiendo que sus datos están en un marco de datos llamado foo:

> head(foo)
             date mcode      mname ycode yname   yissue bsent breturn tsent
417572 2010/07/28 45740 ENDPOINT A  5772  XMAG 20100800     7       0     7
417573 2010/07/31 45740 ENDPOINT A  5772  XMAG 20100800     0       0     0
417574 2010/08/04 45740 ENDPOINT A  5772  XMAG 20100800     0       0     0
417575 2010/08/14 45740 ENDPOINT A  5772  XMAG 20100800     0       0     0
417576 2010/08/26 45740 ENDPOINT A  5772  XMAG 20100800     0       4     0
417577 2010/07/28 45741 ENDPOINT L  5772  XMAG 20100800     2       0     2
       treturn csales
417572       0      0
417573       0      1
417574       0      1
417575       0      1
417576       0      0
417577       0      0

Entonces esto hará la agregación de las columnas numéricas en sus datos:

> aggregate(cbind(bsent, breturn, tsent, treturn, csales) ~ yname, data = foo, 
+           FUN = sum)
  yname bsent breturn tsent treturn csales
1  XMAG    14       8    14       0      6
2  YMAG    11       6    11       6      5

Eso fue usando el fragmento de datos que incluyó en su Q. Usé la interfaz de fórmula para aggregate()que es un poco mejor en este caso porque no necesita todo el foo$ bits en los nombres de las variables que desea agregar. Si le faltan datos (NA) en su conjunto de datos completo, entonces necesitará agregar un argumento adicional na.rm = TRUE que pasará a sum()al igual que:

> aggregate(cbind(bsent, breturn, tsent, treturn, csales) ~ yname, data = foo, 
+           FUN = sum, na.rm = TRUE)

O el plyr biblioteca, que es fácilmente extensible a otras clases de datos:

> library(plyr)
> result.2 <- ddply(df$a, .(df$b), sum)
> result.2
  df.b V1
1 down 30
2   up 25

También puedes usar xtabs o tapply:

xtabs(cbind(bsent, breturn, tsent, treturn, csales) ~ yname, data)

tapply(data$bsent, data$yname, sum)

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *