Me gustaría agregar las filas de una matriz agregando los valores en las filas que tienen el mismo nombre de fila. Mi enfoque actual es la siguiente:Agrupar filas en una matriz grande por nombre de fila
> M
a b c d
1 1 1 2 0
1 2 3 4 2
2 3 0 1 2
3 4 2 5 2
> index <- as.numeric(rownames(M))
> M <- cbind(M,index)
> Dfmat <- data.frame(M)
> Dfmat <- aggregate(. ~ index, data = Dfmat, sum)
> M <- as.matrix(Dfmat)
> rownames(M) <- M[,"index"]
> M <- subset(M, select= -index)
> M
a b c d
1 3 4 6 2
2 3 0 1 2
3 4 2 5 2
El problema de esta appraoch es que necesito para aplicarlo a una serie de matrices muy grandes (hasta 1.000 filas y 30.000 columnas). En estos casos, el tiempo de cálculo es muy alto (el mismo problema cuando se usa ddply). ¿Hay una persona más eficiente para encontrar la solución? ¿Ayuda que las matrices de entrada originales sean DocumentTermMatrix del paquete tm? Por lo que yo sé, están almacenados en un formato de matriz dispersa.
No está completamente claro lo que tiene que hacer, pero me gustaría jugar un poco con el paquete 'reshape' (derretir() y fundir()). Pero más importante: ¿cómo permitiste nombres de filas duplicados en primer lugar? eso es generalmente una mala idea. –
En mis datos, los nombres de las filas son fechas. Son duplicados cada vez que tengo múltiples observaciones en la misma fecha. – Christian
@Christian Eso está bien. Creo que Carl está pensando en marcos de datos, donde los duplicados estrictamente no están permitidos. –