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 >> > >[[alternative HTML version deleted]]
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 >>> >> >> >[[alternative HTML version deleted]]
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 >>>> >>> >>> >> >[[alternative HTML version deleted]]