vectores studio seleccionar operaciones matrices filas entre eliminar data contar concatenar columnas r plyr

studio - seleccionar columnas en r



Suma de filas basadas en el valor de la columna (4)

Una solución data.table para la eficiencia de la memoria y la elegancia de la codificación.

library(data.table) DT <- data.table(df) DT[, lapply(.SD, sum), by = X1]

.SD es el subconjunto de data.table para cada grupo definido por los valores de X1 . Hay 3 viñetas útiles asociadas con el paquete data.table .

Quiero sumar filas que tienen el mismo valor en una columna:

> df <- data.frame("1"=c("a","b","a","c","c"), "2"=c(1,5,3,6,2), "3"=c(3,3,4,5,2)) > df X1 X2 X3 1 a 1 3 2 b 5 3 3 a 3 4 4 c 6 5 5 c 2 2

Para una columna (X2), los datos se pueden agregar para obtener las sumas de todas las filas que tienen el mismo valor de X1:

> ddply(df, .(X1), summarise, X2=sum(X2)) X1 X2 1 a 4 2 b 5 3 c 8

¿Cómo hago lo mismo para X3 y un número arbitrario de otras columnas excepto X1?

Este es el resultado que quiero:

X1 X2 X3 1 a 4 7 2 b 5 3 3 c 8 7


aggregate es una gran función para este tipo de cosas:

aggregate(df[,-1],df["X1"],sum) X1 X2 X3 1 a 4 7 2 b 5 3 3 c 8 7

Y una versión base R del método numcolwise de plyr:

aggregate(df[,sapply(df,is.numeric)],df["X1"],sum)


aggregate puede hacer esto fácilmente con la interfaz de la fórmula:

aggregate(. ~ X1, data=df, FUN=sum) ## X1 X2 X3 ## 1 a 4 7 ## 2 b 5 3 ## 3 c 8 7

Equivalentemente:

aggregate(cbind(X2, X3) ~ X1, data=df, FUN=sum)


ddply(df, "X1", numcolwise(sum))

vea ?numcolwise para detalles y ejemplos.