[R-es] Calculos matrices diferentes tamaños

Jorge I Velez jorgeivanvelez en gmail.com
Lun Mar 9 23:27:18 CET 2015


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]]



Más información sobre la lista de distribución R-help-es