Buen dÃa amigos, Antes que nada, reitero mis agradecimientos por sus respuestas tan precisas y oportunas, sigo en mi trabajo de grado y tengo dificultad con un proceso: Tengo dos matrices A y B, A es de dimensión 5x4 y B es de dimensión 274x3. Requiero de un proceso en el que tome el primer elemento de la Matriz A columna 2 y lo compare con todos los elementos de la Matriz B columna 1 y me diga en un vector de dimensión (1x5) cuantas veces fue el elemento de A mayor que cada uno de los 274 elementos de B y asi hasta llegar a los 5 elementos de A, es decir el resultado de este proceso sera un vector con 5 elementos y en cada uno me dice cuentas veces fue mayor el elemento [i,j] mayor que los 274 elementos de B. Agradezco su colaboración con el tema que como siempre es muy valiosa. Saludos, David Contreras.
[R-es] Calculos matrices diferentes tamaños
5 messages · David Contreras, Jorge I Velez
Hola David, Si entiendo correctamente, lo siguiente deberia hacer lo que describes: set.seed(123) A <- matrix(rpois(20, 4), ncol = 4) B <- matrix(rpois(274*3, 4), ncol = 3) # el resultado es una matriz de orden 5x3 sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(x > B[, .col]))) # [,1] [,2] [,3] #[1,] 5 253 243 #[2,] 112 119 69 #[3,] 243 164 3 #[4,] 112 119 69 #[5,] 112 18 260 Este resultado indica que el elemento A[1, 2] es 5 veces mayor que todos los elementos de B[,1]; A[2, 2] es 112 veces mayor; A[3,2] es 243 veces mayor; A[4,2] es 112 veces mayor y finalmente que A[5,2] es 112 veces mayor que B[, 1]. Similarmente, A[5, 4] es 260 veces mayor que los elementos de B[,3]. Un por uno seria algo como R> sapply(A[,2], function(x) sum(x > B[,1])) [1] 5 112 243 112 112 R> sapply(A[,3], function(x) sum(x > B[,2])) [1] 253 119 164 119 18 R> sapply(A[,4], function(x) sum(x > B[,3])) [1] 243 69 3 69 260 Saludos cordiales, Jorge.- 2015-03-09 16:04 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen dÃa amigos,
Antes que nada, reitero mis agradecimientos por sus respuestas tan precisas
y oportunas, sigo en mi trabajo de grado y tengo dificultad con un proceso:
Tengo dos matrices A y B, A es de dimensión 5x4 y B es de dimensión 274x3.
Requiero de un proceso en el que tome el primer elemento de la Matriz A
columna 2 y lo compare con todos los elementos de la Matriz B columna 1 y
me diga en un vector de dimensión (1x5) cuantas veces fue el elemento de A
mayor que cada uno de los 274 elementos de B y asi hasta llegar a los 5
elementos de A, es decir el resultado de este proceso sera un vector con 5
elementos y en cada uno me dice cuentas veces fue mayor el elemento [i,j]
mayor que los 274 elementos de B.
Agradezco su colaboración con el tema que como siempre es muy valiosa.
Saludos,
David Contreras.
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Buen DÃa Jorge, Es algo parecido a lo que necesito, pero no debo tener en cuenta la suma de la columna sino por ejemplo: Tengo el elemento [1,2] en la matriz A que contiene el número 5 y por otra parte tengo la columna [,2] de la Matriz B con valores por ejemplo (1,2,3,4,5,6,7,8,9,10,11,12). El resultado deberÃa ser un vector que en la posición uno debe indicar que existen 7 valores mayores a 5 en la columna [,2] de la matriz B en comparación con el elemento [1,2] e la Matriz A. Espero ser muy claro ya que a veces se torna un poco complicado la explicación de lo que se quiere programar. Saludos, David Contreras. El 9 de marzo de 2015, 1:12, Jorge I Velez <jorgeivanvelez en gmail.com> escribió:
Hola David, Si entiendo correctamente, lo siguiente deberia hacer lo que describes: set.seed(123) A <- matrix(rpois(20, 4), ncol = 4) B <- matrix(rpois(274*3, 4), ncol = 3) # el resultado es una matriz de orden 5x3 sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(x > B[, .col]))) # [,1] [,2] [,3] #[1,] 5 253 243 #[2,] 112 119 69 #[3,] 243 164 3 #[4,] 112 119 69 #[5,] 112 18 260 Este resultado indica que el elemento A[1, 2] es 5 veces mayor que todos los elementos de B[,1]; A[2, 2] es 112 veces mayor; A[3,2] es 243 veces mayor; A[4,2] es 112 veces mayor y finalmente que A[5,2] es 112 veces mayor que B[, 1]. Similarmente, A[5, 4] es 260 veces mayor que los elementos de B[,3]. Un por uno seria algo como R> sapply(A[,2], function(x) sum(x > B[,1])) [1] 5 112 243 112 112 R> sapply(A[,3], function(x) sum(x > B[,2])) [1] 253 119 164 119 18 R> sapply(A[,4], function(x) sum(x > B[,3])) [1] 243 69 3 69 260 Saludos cordiales, Jorge.- 2015-03-09 16:04 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen dÃa amigos,
Antes que nada, reitero mis agradecimientos por sus respuestas tan
precisas
y oportunas, sigo en mi trabajo de grado y tengo dificultad con un
proceso:
Tengo dos matrices A y B, A es de dimensión 5x4 y B es de dimensión 274x3.
Requiero de un proceso en el que tome el primer elemento de la Matriz A
columna 2 y lo compare con todos los elementos de la Matriz B columna 1 y
me diga en un vector de dimensión (1x5) cuantas veces fue el elemento de A
mayor que cada uno de los 274 elementos de B y asi hasta llegar a los 5
elementos de A, es decir el resultado de este proceso sera un vector con 5
elementos y en cada uno me dice cuentas veces fue mayor el elemento [i,j]
mayor que los 274 elementos de B.
Agradezco su colaboración con el tema que como siempre es muy valiosa.
Saludos,
David Contreras.
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola David, Gracias por la aclaracion. Confio en que esta vez si se obtiene lo que buscas: R> set.seed(123) R> A <- matrix(rpois(20, 4), ncol = 4) R> B <- matrix(rpois(274*3, 4), ncol = 3) R> A # [,1] [,2] [,3] [,4] #[1,] 3 1 8 7 #[2,] 6 4 4 3 #[3,] 3 7 5 1 #[4,] 6 4 4 3 #[5,] 7 4 2 8 R> # el resultado es una matriz de orden 5x3 R> sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(B[, .col] > x))) # [,1] [,2] [,3] #[1,] 256 9 13 #[2,] 98 102 157 #[3,] 14 59 244 #[4,] 98 102 157 #[5,] 98 206 6 Ahora hagamos los calculos para los elementos de A: R> sum(B[,1] > A[1,2]) # [1] 256 R> sum(B[,1] > A[2,2]) # [1] 98 R> sum(B[,1] > A[3,2]) # [1] 14 R> sum(B[,1] > A[4,2]) # [1] 98 R> sum(B[,1] > A[5,2]) # [1] 98 R> sum(B[,2] > A[1,3]) # [1] 9 R> sum(B[,2] > A[2,3]) # [1] 102 R> sum(B[,2] > A[3,3]) # [1] 59 R> sum(B[,2] > A[4,3]) # [1] 102 R> sum(B[,2] > A[5,3]) # [1] 206 R> sum(B[,3] > A[1,4]) # [1] 13 R> sum(B[,3] > A[2,4]) # [1] 157 R> sum(B[,3] > A[3,4]) # [1] 244 R> sum(B[,3] > A[4,4]) # [1] 157 R> sum(B[,3] > A[5,4]) # [1] 6 Saludos, Jorge.- 2015-03-10 1:40 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen DÃa Jorge, Es algo parecido a lo que necesito, pero no debo tener en cuenta la suma de la columna sino por ejemplo: Tengo el elemento [1,2] en la matriz A que contiene el número 5 y por otra parte tengo la columna [,2] de la Matriz B con valores por ejemplo (1,2,3,4,5,6,7,8,9,10,11,12). El resultado deberÃa ser un vector que en la posición uno debe indicar que existen 7 valores mayores a 5 en la columna [,2] de la matriz B en comparación con el elemento [1,2] e la Matriz A. Espero ser muy claro ya que a veces se torna un poco complicado la explicación de lo que se quiere programar. Saludos, David Contreras. El 9 de marzo de 2015, 1:12, Jorge I Velez <jorgeivanvelez en gmail.com> escribió: Hola David,
Si entiendo correctamente, lo siguiente deberia hacer lo que describes: set.seed(123) A <- matrix(rpois(20, 4), ncol = 4) B <- matrix(rpois(274*3, 4), ncol = 3) # el resultado es una matriz de orden 5x3 sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(x
B[, .col])))
# [,1] [,2] [,3] #[1,] 5 253 243 #[2,] 112 119 69 #[3,] 243 164 3 #[4,] 112 119 69 #[5,] 112 18 260 Este resultado indica que el elemento A[1, 2] es 5 veces mayor que todos los elementos de B[,1]; A[2, 2] es 112 veces mayor; A[3,2] es 243 veces mayor; A[4,2] es 112 veces mayor y finalmente que A[5,2] es 112 veces mayor que B[, 1]. Similarmente, A[5, 4] es 260 veces mayor que los elementos de B[,3]. Un por uno seria algo como R> sapply(A[,2], function(x) sum(x > B[,1])) [1] 5 112 243 112 112 R> sapply(A[,3], function(x) sum(x > B[,2])) [1] 253 119 164 119 18 R> sapply(A[,4], function(x) sum(x > B[,3])) [1] 243 69 3 69 260 Saludos cordiales, Jorge.- 2015-03-09 16:04 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen dÃa amigos,
Antes que nada, reitero mis agradecimientos por sus respuestas tan
precisas
y oportunas, sigo en mi trabajo de grado y tengo dificultad con un
proceso:
Tengo dos matrices A y B, A es de dimensión 5x4 y B es de dimensión
274x3.
Requiero de un proceso en el que tome el primer elemento de la Matriz A
columna 2 y lo compare con todos los elementos de la Matriz B columna 1 y
me diga en un vector de dimensión (1x5) cuantas veces fue el elemento de
A
mayor que cada uno de los 274 elementos de B y asi hasta llegar a los 5
elementos de A, es decir el resultado de este proceso sera un vector con
5
elementos y en cada uno me dice cuentas veces fue mayor el elemento [i,j]
mayor que los 274 elementos de B.
Agradezco su colaboración con el tema que como siempre es muy valiosa.
Saludos,
David Contreras.
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Buen dÃa Jorge, Muchas gracias, ya todo funcionando muy bien. Saludos, David C. El 9 de marzo de 2015, 17:27, Jorge I Velez <jorgeivanvelez en gmail.com> escribió:
Hola David, Gracias por la aclaracion. Confio en que esta vez si se obtiene lo que buscas: R> set.seed(123) R> A <- matrix(rpois(20, 4), ncol = 4) R> B <- matrix(rpois(274*3, 4), ncol = 3) R> A # [,1] [,2] [,3] [,4] #[1,] 3 1 8 7 #[2,] 6 4 4 3 #[3,] 3 7 5 1 #[4,] 6 4 4 3 #[5,] 7 4 2 8 R> # el resultado es una matriz de orden 5x3 R> sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(B[, .col] > x))) # [,1] [,2] [,3] #[1,] 256 9 13 #[2,] 98 102 157 #[3,] 14 59 244 #[4,] 98 102 157 #[5,] 98 206 6 Ahora hagamos los calculos para los elementos de A: R> sum(B[,1] > A[1,2]) # [1] 256 R> sum(B[,1] > A[2,2]) # [1] 98 R> sum(B[,1] > A[3,2]) # [1] 14 R> sum(B[,1] > A[4,2]) # [1] 98 R> sum(B[,1] > A[5,2]) # [1] 98 R> sum(B[,2] > A[1,3]) # [1] 9 R> sum(B[,2] > A[2,3]) # [1] 102 R> sum(B[,2] > A[3,3]) # [1] 59 R> sum(B[,2] > A[4,3]) # [1] 102 R> sum(B[,2] > A[5,3]) # [1] 206 R> sum(B[,3] > A[1,4]) # [1] 13 R> sum(B[,3] > A[2,4]) # [1] 157 R> sum(B[,3] > A[3,4]) # [1] 244 R> sum(B[,3] > A[4,4]) # [1] 157 R> sum(B[,3] > A[5,4]) # [1] 6 Saludos, Jorge.- 2015-03-10 1:40 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen DÃa Jorge, Es algo parecido a lo que necesito, pero no debo tener en cuenta la suma de la columna sino por ejemplo: Tengo el elemento [1,2] en la matriz A que contiene el número 5 y por otra parte tengo la columna [,2] de la Matriz B con valores por ejemplo (1,2,3,4,5,6,7,8,9,10,11,12). El resultado deberÃa ser un vector que en la posición uno debe indicar que existen 7 valores mayores a 5 en la columna [,2] de la matriz B en comparación con el elemento [1,2] e la Matriz A. Espero ser muy claro ya que a veces se torna un poco complicado la explicación de lo que se quiere programar. Saludos, David Contreras. El 9 de marzo de 2015, 1:12, Jorge I Velez <jorgeivanvelez en gmail.com> escribió: Hola David,
Si entiendo correctamente, lo siguiente deberia hacer lo que describes: set.seed(123) A <- matrix(rpois(20, 4), ncol = 4) B <- matrix(rpois(274*3, 4), ncol = 3) # el resultado es una matriz de orden 5x3 sapply(1:ncol(B), function(.col) sapply(A[, .col + 1], function(x) sum(x
B[, .col])))
# [,1] [,2] [,3] #[1,] 5 253 243 #[2,] 112 119 69 #[3,] 243 164 3 #[4,] 112 119 69 #[5,] 112 18 260 Este resultado indica que el elemento A[1, 2] es 5 veces mayor que todos los elementos de B[,1]; A[2, 2] es 112 veces mayor; A[3,2] es 243 veces mayor; A[4,2] es 112 veces mayor y finalmente que A[5,2] es 112 veces mayor que B[, 1]. Similarmente, A[5, 4] es 260 veces mayor que los elementos de B[,3]. Un por uno seria algo como R> sapply(A[,2], function(x) sum(x > B[,1])) [1] 5 112 243 112 112 R> sapply(A[,3], function(x) sum(x > B[,2])) [1] 253 119 164 119 18 R> sapply(A[,4], function(x) sum(x > B[,3])) [1] 243 69 3 69 260 Saludos cordiales, Jorge.- 2015-03-09 16:04 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:
Buen dÃa amigos,
Antes que nada, reitero mis agradecimientos por sus respuestas tan
precisas
y oportunas, sigo en mi trabajo de grado y tengo dificultad con un
proceso:
Tengo dos matrices A y B, A es de dimensión 5x4 y B es de dimensión
274x3.
Requiero de un proceso en el que tome el primer elemento de la Matriz A
columna 2 y lo compare con todos los elementos de la Matriz B columna 1
y
me diga en un vector de dimensión (1x5) cuantas veces fue el elemento
de A
mayor que cada uno de los 274 elementos de B y asi hasta llegar a los 5
elementos de A, es decir el resultado de este proceso sera un vector
con 5
elementos y en cada uno me dice cuentas veces fue mayor el elemento
[i,j]
mayor que los 274 elementos de B.
Agradezco su colaboración con el tema que como siempre es muy valiosa.
Saludos,
David Contreras.
[[alternative HTML version deleted]]
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es