[R-es] Problema con filtros de datos en un data.frame

neo ericconchamunoz en gmail.com
Mar Sep 10 19:12:33 CEST 2013


Muchas gracias Isidro, es perfecta tu explicacion ... cdo sabes que 
estas haciendo puedes extrapolar correctamente a otras situaciones, no ?

Un abrazo, muchas gracias,

Eric.





On Tue 10 Sep 2013 04:06:00 AM CLT, Beatriz Martínez wrote:
> Muchas gracias por la explicación Isidro!
>
>
> El 10 de septiembre de 2013 08:19, Isidro Hidalgo <ihidalgo en jccm.es>escribió:
>
>> Cuando utilizas "==" estás comparando el vector "graph$NCar" (longitud 892)
>> con otro de longitud 2: c("160s","180s").
>> Es decir, comparas el primer valor de "graph$NCar" con el primer valor de
>> c("160s","180s"), el segundo valor de "graph$NCar" con el segundo valor de
>> c("160s","180s"), el tercer valor de "graph$NCar" con el primer valor de
>> c("160s","180s"), etc...
>> Es decir, comparas los elementos de dos vectores, uno a uno, y cuando al
>> vector de menor longitud se le acaban sus elementos, se recicla...
>> En cambio, si utilizas %in% lo que haces es buscar qué elementos del primer
>> vector coinciden con los del segundo.
>> Un saludo.
>>
>> Isidro Hidalgo Arellano
>> Observatorio Regional de Empleo
>> Consejería de Empleo y Economía
>> ihidalgo en jccm.es
>> http://www.jccm.es
>>
>>
>>
>>> -----Mensaje original-----
>>> De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-
>>> project.org] En nombre de neo
>>> Enviado el: sábado, 07 de septiembre de 2013 1:49
>>> Para: Carlos J. Gil Bellosta
>>> CC: Lista R
>>> Asunto: Re: [R-es] Problema con filtros de datos en un data.frame
>>>
>>> Me funciono perfecto, muchas gracias Carlos ... si no es mucha la
>>> molestia, alguien podria explicarme la diferencia tecnica entre ambos
>>> signos, y porque == produce el resultado que produce ? en que casos
>>> deberia usar == y en que casos %in% ... cual es el significado de cada
>>> uno ?
>>>
>>> Disculpen que no me conforme solo con obtener el resultado adecuado, es
>>> solo que no me suena logico que == no produzca el resultado que uno se
>>> imagina al ver el signo :)
>>>
>>> Saludos cordiales y muchas gracias,
>>>
>>> Eric.
>>>
>>>
>>>
>>>
>>>
>>> On Fri 06 Sep 2013 07:25:43 PM CLT, Carlos J. Gil Bellosta  wrote:
>>>> Hola, ¿qué tal?
>>>>
>>>> No uses == sino %in%.
>>>>
>>>> Un saludo,
>>>>
>>>> Carlos J. Gil Bellosta
>>>> http://www.datanalytics.com
>>>>
>>>> El día 7 de septiembre de 2013 00:57, neo <ericconchamunoz en gmail.com>
>>> escribió:
>>>>> Estimados, tengo el siguiente problema: estoy trabajando con un
>>>>> data.frame que tiene 892 filas y 9 columnas, el cual adjunto para
>>> que
>>>>> puedan probar.
>>>>>
>>>>> Cuando consulto por las filas que cumplen una cierta condicion, por
>>>>> ejemplo, ...
>>>>>
>>>>> graph[graph$NCar==c("160s"),]
>>>>>
>>>>> obtengo el siguiente conjunto de datos:
>>>>>
>>>>>     sol   con dia NCar NIns isom      area rep tipo
>>>>> 1   con 0.001   1 160s    0    s 0.6083543   1
>>>>> 8   con 0.001   2 160s    0    s 0.6388484   1 <NA>
>>>>> 10  con 0.001   3 160s    0    s 0.6873404   1 <NA>
>>>>> 13  con 0.001   4 160s    0    s 0.6476428   1 <NA>
>>>>> 20  con 0.001   1 160s    0    s 0.6094205   2 <NA>
>>>>> 23  con 0.001   3 160s    0    s 0.6624022   2 <NA>
>>>>> 25  con 0.001   4 160s    0    s 0.6486783   2 <NA>
>>>>> 31  con 0.001   1 160s    0    s 0.6131645   3 <NA>
>>>>> 34  con 0.001   4 160s    0    s 0.6788893   3 <NA>
>>>>> 36  dec 0.051   2 160s    0    s 0.6822148   1 <NA>
>>>>> 39  dec 0.051   3 160s    0    s 0.6661846   1 <NA>
>>>>> 41  dec 0.051   4 160s    0    s 0.6575084   1 <NA>
>>>>> 43  dec 0.051   5 160s    0    s 0.6233795   1 <NA>
>>>>> 45  dec 0.051   2 160s    0    s 0.6158327   2 <NA>
>>>>> ...
>>>>>
>>>>> Cuando amplio el conjunto de datos, haciendo mas flexible el filtro,
>>>>> por
>>>>> ejemplo:
>>>>>
>>>>> graph[graph$NCar==c("160s","180s"),]
>>>>>
>>>>> obtengo este otro conjunto de datos:
>>>>>
>>>>>
>>>>>     sol   con dia NCar NIns isom         area rep tipo
>>>>> 1   con 0.001   1 160s    0    s 6.083543e-01   1
>>>>> 4   con 0.001   1 180s    0    s 3.791027e-01   1 <NA>
>>>>> 13  con 0.001   4 160s    0    s 6.476428e-01   1 <NA>
>>>>> 18  con 0.001   4 180s    0    s 3.378795e-01   1 <NA>
>>>>> 23  con 0.001   3 160s    0    s 6.624022e-01   2 <NA>
>>>>> 24  con 0.001   3 180s    0    s 3.375978e-01   2 <NA>
>>>>> 25  con 0.001   4 160s    0    s 6.486783e-01   2 <NA>
>>>>> 28  con 0.001   4 180s    0    s 3.457121e-01   2 <NA>
>>>>> 31  con 0.001   1 160s    0    s 6.131645e-01   3 <NA>
>>>>> 32  con 0.001   1 180s    0    s 3.816533e-01   3 <NA>
>>>>> 39  dec 0.051   3 160s    0    s 6.661846e-01   1 <NA>
>>>>> 40  dec 0.051   3 180s    0    s 3.338154e-01   1 <NA>
>>>>> 41  dec 0.051   4 160s    0    s 6.575084e-01   1 <NA>
>>>>> 42  dec 0.051   4 180s    0    s 3.424916e-01   1 <NA>
>>>>> 43  dec 0.051   5 160s    0    s 6.233795e-01   1 <NA>
>>>>> ...
>>>>>
>>>>> mi pregunta es porque no aparecen algunos datos como el siguiente:
>>>>>
>>>>>     sol   con dia NCar NIns isom         area rep tipo
>>>>> 8   con 0.001   2 160s    0    s 0.6388484   1 <NA>
>>>>>
>>>>>
>>>>> el que segun yo deberia aparecer, ya que el filtro es menos
>>>>> restrictivo y el segundo conjunto de datos deberia contener el
>>> primero.
>>>>>
>>>>> Alguien puede orientarme en que estoy haciendo mal ?
>>>>>
>>>>> Saludos a todos y gracias de antemano.
>>>>>
>>>>> Eric.
>>>>>
>>>>> _______________________________________________
>>>>> R-help-es mailing list
>>>>> R-help-es en r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>>
>>>>
>>>
>>> _______________________________________________
>>> R-help-es mailing list
>>> R-help-es en r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
>
>
>
> _______________________________________________
> 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