Buenas tardes a tod@s,
Me gustaria redondear las entradas de una matriz m manteniendo la suma de
filas y columnas constantes (son valores fijos conocidos).  En la
aplicacion que estoy trabajando (en la que por supuesto m tiene una
dimension mayor que en el ejemplo), no son permitidos numeros decimales y
por ello debe efectuarse el redondeo.
La forma de m es:
m <- matrix(c(3.546, 4.5345, 1.9195,
         12.332, 15.982, 21.686,
         4.122, 9.4835, 16.3945), ncol = 3, byrow = TRUE)
colnames(m) <- paste0('C', 1:3)
rownames(m) <- paste0('X', 1:3)
m
#        C1      C2      C3
# X1  3.546  4.5345  1.9195
# X2 12.332 15.9820 21.6860
# X3  4.122  9.4835 16.3945
Los totales (por filas y columna, todos fijos) son los siguientes
(TotalColumna <- colSums(m))
(TotalFila <- rowSums(m))
Si procedo haciendo
m2 <- round(m, 0)
m2
es claro que los totales fila y columna no se mantienen
colSums(m2)  # columna
rowSums(m2)  # fila
Alguna idea de como efectuar el redondeo?  Muchisimas gracias de antemano.
Saludos,
Jorge Velez
	[[alternative HTML version deleted]]
Esto lo hice yo en una práctica en la universidad, Definíamos un problema de optimización entera minimizando el error de redondeo y restringiendo a la suma de filas y columnas. El 23 de agosto de 2013 19:05, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:> Buenas tardes a tod@s, > > Me gustaria redondear las entradas de una matriz m manteniendo la suma de > filas y columnas constantes (son valores fijos conocidos). En la > aplicacion que estoy trabajando (en la que por supuesto m tiene una > dimension mayor que en el ejemplo), no son permitidos numeros decimales y > por ello debe efectuarse el redondeo. > > La forma de m es: > > m <- matrix(c(3.546, 4.5345, 1.9195, > 12.332, 15.982, 21.686, > 4.122, 9.4835, 16.3945), ncol = 3, byrow = TRUE) > colnames(m) <- paste0('C', 1:3) > rownames(m) <- paste0('X', 1:3) > m > # C1 C2 C3 > # X1 3.546 4.5345 1.9195 > # X2 12.332 15.9820 21.6860 > # X3 4.122 9.4835 16.3945 > > Los totales (por filas y columna, todos fijos) son los siguientes > > (TotalColumna <- colSums(m)) > (TotalFila <- rowSums(m)) > > Si procedo haciendo > > m2 <- round(m, 0) > m2 > > es claro que los totales fila y columna no se mantienen > > colSums(m2) # columna > rowSums(m2) # fila > > Alguna idea de como efectuar el redondeo? Muchisimas gracias de antemano. > > Saludos, > Jorge Velez > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Jorge Ayuso Rejas [[alternative HTML version deleted]]
Gracias, Jorge. Y cual fue la solucion a la que llegaron? --JIV Sent from my phone. Please excuse my brevity and misspelling. On Aug 25, 2013, at 8:36 AM, Jorge Ayuso Rejas <jayusor@gmail.com> wrote: Esto lo hice yo en una práctica en la universidad, Definíamos un problema de optimización entera minimizando el error de redondeo y restringiendo a la suma de filas y columnas. El 23 de agosto de 2013 19:05, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:> Buenas tardes a tod@s, > > Me gustaria redondear las entradas de una matriz m manteniendo la suma de > filas y columnas constantes (son valores fijos conocidos). En la > aplicacion que estoy trabajando (en la que por supuesto m tiene una > dimension mayor que en el ejemplo), no son permitidos numeros decimales y > por ello debe efectuarse el redondeo. > > La forma de m es: > > m <- matrix(c(3.546, 4.5345, 1.9195, > 12.332, 15.982, 21.686, > 4.122, 9.4835, 16.3945), ncol = 3, byrow = TRUE) > colnames(m) <- paste0('C', 1:3) > rownames(m) <- paste0('X', 1:3) > m > # C1 C2 C3 > # X1 3.546 4.5345 1.9195 > # X2 12.332 15.9820 21.6860 > # X3 4.122 9.4835 16.3945 > > Los totales (por filas y columna, todos fijos) son los siguientes > > (TotalColumna <- colSums(m)) > (TotalFila <- rowSums(m)) > > Si procedo haciendo > > m2 <- round(m, 0) > m2 > > es claro que los totales fila y columna no se mantienen > > colSums(m2) # columna > rowSums(m2) # fila > > Alguna idea de como efectuar el redondeo? Muchisimas gracias de antemano. > > Saludos, > Jorge Velez > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Jorge Ayuso Rejas [[alternative HTML version deleted]]