[R-es] Calculos matrices diferentes tamaños

David Contreras davidcontreras00 en gmail.com
Mar Mar 10 15:07:14 CET 2015


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



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