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 >> >
Hola Eric, Si tienes una condicion, usa == ; cuando tengas mas de una, usa %in%. Saludos, Jorge.- Sent from my phone. Please excuse my brevity and misspelling. On Sep 6, 2013, at 6:49 PM, neo <ericconchamunoz en gmail.com> wrote:> 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
Isidro Hidalgo
2013-Sep-10 06:19 UTC
[R-es] Problema con filtros de datos en un data.frame
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
Beatriz Martínez
2013-Sep-10 08:06 UTC
[R-es] Problema con filtros de datos en un data.frame
Muchas gracias por la explicación Isidro! El 10 de septiembre de 2013 08:19, Isidro Hidalgo <ihidalgo@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@jccm.es > http://www.jccm.es > > > > > -----Mensaje original----- > > De: r-help-es-bounces@r-project.org [mailto:r-help-es-bounces@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@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@r-project.org > > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > > >> > > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Beatriz Martínez @_bmartinez_ <https://twitter.com/_bmartinez_> [[alternative HTML version deleted]]
Seemingly Similar Threads
- Problema con filtros de datos en un data.frame
- Problema con filtros de datos en un data.frame
- Problema con filtros de datos en un data.frame
- Problema con filtros de datos en un data.frame
- Eliminar filas que cumplen con mas de un criterios simultaneamente ...