[R-es] Selección de observaciones

Carlos J. Gil Bellosta cgb en datanalytics.com
Vie Oct 8 14:08:44 CEST 2010


Hola, ¿qué tal?

Creo que esto te vale:

aa[apply( t(aa[,1:2] ) == c(12,15), 2, all ), ]

Aunque sería más elegante meterlo en una función:

> foo <- function( m, cols, vals ) m[ apply( t(m[,cols] ) == vals, 2, all ), ]
> foo( aa, 1:2, c(12,15) )

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 8 de octubre de 2010 13:00, Usuario R <r.user.spain en gmail.com> escribió:
> HOla,
>
> Si necesitas que todos los elementos del vector x estén en esa fila puedes
> hacer:
>
>
> aa <- matrix(11:19,3,3)
> x <- c(12, 18)
> foo <- function( y )all( x %in% y )
> aa[ apply( aa, 1, foo ),]
>
> Te sirve esto?
> Un saludo
>
> Patricia
>
>
>
> El 8 de octubre de 2010 12:53, Usuario R <r.user.spain en gmail.com> escribió:
>
>> Hola Ignacio,
>>
>> ¿NEcesitas que algun elemento del vecto de numeros está en la fila o que
>> estén todos los elementos del vector?
>>
>> El 8 de octubre de 2010 12:45, Ignacio Ramos Alvarez <
>> i.ramos.alvarez en gmail.com> escribió:
>>
>>> Hola José, gracias por tu rápida respuesta, pero lo que necesito es algo
>>> más
>>> complejo y genérico, diría que necesito selección condicional sobre varias
>>> columnas a la vez sin encadenar varios operadores lógicos.
>>>
>>> Saludos.
>>>
>>>
>>>
>>> >
>>> > El 8 de octubre de 2010 12:23, Jose Iparraguirre D'Elia <
>>> Jose en erini.ac.uk>escribió:
>>> >
>>> >
>>> >> Hola Ignacio,
>>> >>
>>> >> A veces pasa que uno no recuerda ni lo más elemental. Hace poco volví
>>> de
>>> >> dos semanas de vacaciones y no me acordaba el número de mi propio
>>> teléfono
>>> >> móvil!
>>> >> ¿Es esto lo que estás buscando?
>>> >>
>>> >> > aa[2,]
>>> >>
>>> >> Saludos,
>>> >>
>>> >> José
>>> >>
>>> >>
>>> >> -----Original Message-----
>>> >> From: r-help-es-bounces en r-project.org on behalf of Ignacio Ramos
>>> Alvarez
>>> >> Sent: Fri 08/10/2010 11:00
>>> >> To: r-help-es en r-project.org
>>> >> Subject: [R-es] Selección de observaciones
>>> >>
>>> >> Hola a todos.
>>> >> Estoy atascado en un sitio que no me he encontrado antes, debe ser
>>> fácil y
>>> >> rápido, a ver si alguien me puede ayudar.
>>> >>
>>> >> Puesto fácil, tengo:
>>> >>
>>> >> > aa <- matrix(11:19,3,3)
>>> >> > aa
>>> >>      [,1] [,2] [,3]
>>> >> [1,]   11   14   17
>>> >> [2,]   12   15   18
>>> >> [3,]   13   16   19
>>> >>
>>> >> Quiero la fila cuyo primer elemento es 12 y el segundo 15.
>>> >>
>>> >> > aa[aa[,1:2] == (c(12,15)),]
>>> >> Error: (subscript) logical subscript too long
>>> >>
>>> >> ¿Entonces?
>>> >>
>>> >> > aa[aa[,1:2] == t(c(12,15)),]
>>> >> Error in aa[, 1:2] == t(c(12, 15)) : non-conformable arrays
>>> >>
>>> >> Puedo hacer, claro,
>>> >> > aa[aa[,1]==12 & aa[,2]==15,]
>>> >> [1] 12 15 18
>>> >>
>>> >> Pero necesito algo más "elegante" ya que la selección es sobre
>>> bastantes
>>> >> más
>>> >> columnas.
>>> >>
>>> >> Gracias de antemano y un saludo.
>>> >>
>>> >>
>>> >> --
>>> >> Ignacio Ramos Álvarez
>>> >> i.ramos.alvarez en gmail.com
>>> >>
>>> >>         [[alternative HTML version deleted]]
>>> >>
>>> >>
>>> >>
>>> >
>>> >
>>>
>>>        [[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
>>>
>>>
>>
>>
>> --
>> Patricia García González
>> r-es.org/
>>
>
>
>
> --
> Patricia García González
> r-es.org/
>
>        [[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
>
>



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