Jaume Tormo
2012-Feb-15 12:59 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Hola eRReros, Necesito extraer datos de un dataframe según uno de los factores. La cosa sería algo así: df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] Que me crea un df nuevo solo con las filas en que Species es setosa o virginica. El problema es que mi factor de interés tiene 22 niveles y a veces he de seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | con su == correspondiente 13 o 8 veces. Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final tienes que escribir un == o != para cada factor que eliges. ¿Sabéis si se puede abreviar de alguna manera? Me suena que esto se ha tratado en la lista pero lo he estado buscando y no lo he encontrado, si alguien encuentra aquel mensaje... Gracias. -- Jaume Tormo Blanes IMEM Ramon Margalef. Carretera San Vicente del Raspeig s/n 03690 San Vicente del Raspeig - Alicante www.ua.es acercad.wordpress.com [[alternative HTML version deleted]]
Marcuzzi, Javier Rubén
2012-Feb-15 13:42 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Estimado Jaume No me queda claro como es su caso, como son factores con niveles ... Si le sirve, yo numero los niveles y busco niveles mayor, igual o menor. Si no recuerdo mal, en esta lista de correos apareció una consulta parecida, una de las opciones era crear una lista y usarla en la búsqueda. Si usted lee los correos no muy viejos, digamos 6 meses a lo sumo, puede encontrar la conversación de aquellos días, yo realmente no recuerdo el asunto como para indicarle cuál era. Javier -----Mensaje original----- From: Jaume Tormo Sent: Wednesday, February 15, 2012 9:59 AM To: r-help-es en r-project.org Subject: [R-es] extraer datos de un dataframe a partir de un factor Hola eRReros, Necesito extraer datos de un dataframe según uno de los factores. La cosa sería algo así: df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] Que me crea un df nuevo solo con las filas en que Species es setosa o virginica. El problema es que mi factor de interés tiene 22 niveles y a veces he de seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | con su == correspondiente 13 o 8 veces. Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final tienes que escribir un == o != para cada factor que eliges. ¿Sabéis si se puede abreviar de alguna manera? Me suena que esto se ha tratado en la lista pero lo he estado buscando y no lo he encontrado, si alguien encuentra aquel mensaje... Gracias. -- Jaume Tormo Blanes IMEM Ramon Margalef. Carretera San Vicente del Raspeig s/n 03690 San Vicente del Raspeig - Alicante www.ua.es acercad.wordpress.com [[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
Jorge I Velez
2012-Feb-15 13:48 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Hola Jaume, Podrias utilizar una combinacion de ?subset y ?"%in%": subset(tusdatos, levels(tufactor) %in% tusvalores) Un saludo, Jorge.- 2012/2/15 Jaume Tormo <>> Hola eRReros, > > Necesito extraer datos de un dataframe según uno de los factores. > > La cosa sería algo así: > > df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] > > Que me crea un df nuevo solo con las filas en que Species es setosa o > virginica. > > El problema es que mi factor de interés tiene 22 niveles y a veces he de > seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | con > su == correspondiente 13 o 8 veces. > Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final > tienes que escribir un == o != para cada factor que eliges. > > ¿Sabéis si se puede abreviar de alguna manera? > > Me suena que esto se ha tratado en la lista pero lo he estado buscando y no > lo he encontrado, si alguien encuentra aquel mensaje... > > Gracias. > > > > -- > Jaume Tormo Blanes > IMEM Ramon Margalef. > Carretera San Vicente del Raspeig s/n > 03690 San Vicente del Raspeig - Alicante > www.ua.es > acercad.wordpress.com > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2012-Feb-15 13:58 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Hola, ¿qué tal? Al hilo de la sugerencia de usar subset, quiero subrayar la advertencia de su página de ayuda: Warning: This is a convenience function intended for use interactively. For programming it is better to use the standard subsetting functions like ?[?, and in particular the non-standard evaluation of argument ?subset? can have unanticipated consequences. ¡Quién lo probó/sufrió lo sabe! Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 15 de febrero de 2012 14:48, Jorge I Velez <jorgeivanvelez en gmail.com> escribió:> Hola Jaume, > > Podrias utilizar una combinacion de ?subset y ?"%in%": > > subset(tusdatos, levels(tufactor) %in% tusvalores) > > Un saludo, > Jorge.- > > > 2012/2/15 Jaume Tormo <> > >> Hola eRReros, >> >> Necesito extraer datos de un dataframe según uno de los factores. >> >> La cosa sería algo así: >> >> df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] >> >> Que me crea un df nuevo solo con las filas en que Species es setosa o >> virginica. >> >> El problema es que mi factor de interés tiene 22 niveles y a veces he de >> seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | con >> su == correspondiente 13 o 8 veces. >> Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final >> tienes que escribir un == o != para cada factor que eliges. >> >> ¿Sabéis si se puede abreviar de alguna manera? >> >> Me suena que esto se ha tratado en la lista pero lo he estado buscando y no >> lo he encontrado, si alguien encuentra aquel mensaje... >> >> Gracias. >> >> >> >> -- >> Jaume Tormo Blanes >> IMEM Ramon Margalef. >> Carretera San Vicente del Raspeig s/n >> 03690 San Vicente del Raspeig - Alicante >> www.ua.es >> acercad.wordpress.com >> >> [[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]] > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >
Jaume Tormo
2012-Feb-15 14:04 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Muchas gracias a los dos, La solución que me encaja mejor es la de Jorge, usando eso solo tengo que modificar el vector tusvalores cada vez. Si numero los niveles me encotraré con el mismo problema. jaume. El 15 de febrero de 2012 14:48, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:> Hola Jaume, > > Podrias utilizar una combinacion de ?subset y ?"%in%": > > subset(tusdatos, levels(tufactor) %in% tusvalores) > > Un saludo, > Jorge.- > > > 2012/2/15 Jaume Tormo <> > >> Hola eRReros, >> >> Necesito extraer datos de un dataframe según uno de los factores. >> >> La cosa sería algo así: >> >> df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] >> >> Que me crea un df nuevo solo con las filas en que Species es setosa o >> virginica. >> >> El problema es que mi factor de interés tiene 22 niveles y a veces he de >> seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | >> con >> su == correspondiente 13 o 8 veces. >> Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final >> tienes que escribir un == o != para cada factor que eliges. >> >> ¿Sabéis si se puede abreviar de alguna manera? >> >> Me suena que esto se ha tratado en la lista pero lo he estado buscando y >> no >> lo he encontrado, si alguien encuentra aquel mensaje... >> >> Gracias. >> >> >> >> -- >> Jaume Tormo Blanes >> IMEM Ramon Margalef. >> Carretera San Vicente del Raspeig s/n >> 03690 San Vicente del Raspeig - Alicante >> www.ua.es >> acercad.wordpress.com >> >> [[alternative HTML version deleted]] >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >-- Jaume Tormo Blanes IMEM Ramon Margalef. Carretera San Vicente del Raspeig s/n 03690 San Vicente del Raspeig - Alicante www.ua.es acercad.wordpress.com [[alternative HTML version deleted]]
Jorge I Velez
2012-Feb-15 14:06 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Gracias Carlos por dicha advertencia. Otra opcion solo con %in% es: ok <- with(iris, Species %in% c("setosa", "virginica")) iris[ok, ] Jorge.- 2012/2/15 Carlos J. Gil Bellosta <>> Hola, ¿qué tal? > > Al hilo de la sugerencia de usar subset, quiero subrayar la > advertencia de su página de ayuda: > > Warning: > > This is a convenience function intended for use interactively. > For programming it is better to use the standard subsetting > functions like ‘[’, and in particular the non-standard evaluation > of argument ‘subset’ can have unanticipated consequences. > > ¡Quién lo probó/sufrió lo sabe! > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 15 de febrero de 2012 14:48, Jorge I Velez > < <jorgeivanvelez@gmail.com>> escribió: > > Hola Jaume, > > > > Podrias utilizar una combinacion de ?subset y ?"%in%": > > > > subset(tusdatos, levels(tufactor) %in% tusvalores) > > > > Un saludo, > > Jorge.- > > > > > > 2012/2/15 Jaume Tormo <> > > > >> Hola eRReros, > >> > >> Necesito extraer datos de un dataframe según uno de los factores. > >> > >> La cosa sería algo así: > >> > >> df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] > >> > >> Que me crea un df nuevo solo con las filas en que Species es setosa o > >> virginica. > >> > >> El problema es que mi factor de interés tiene 22 niveles y a veces he de > >> seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | > con > >> su == correspondiente 13 o 8 veces. > >> Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final > >> tienes que escribir un == o != para cada factor que eliges. > >> > >> ¿Sabéis si se puede abreviar de alguna manera? > >> > >> Me suena que esto se ha tratado en la lista pero lo he estado buscando > y no > >> lo he encontrado, si alguien encuentra aquel mensaje... > >> > >> Gracias. > >> > >> > >> > >> -- > >> Jaume Tormo Blanes > >> IMEM Ramon Margalef. > >> Carretera San Vicente del Raspeig s/n > >> 03690 San Vicente del Raspeig - Alicante > >> www.ua.es > >> acercad.wordpress.com > >> > >> [[alternative HTML version deleted]] > >> > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > >> > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >[[alternative HTML version deleted]]
Jaume Tormo
2012-Feb-15 14:06 UTC
[R-es] extraer datos de un dataframe a partir de un factor
Hola, Intentaré meter el %in% dentro de los [ ]. Aunque no es una función muy complicada y no creo que subset me diera problemas. Gracias por el aviso. El 15 de febrero de 2012 14:58, Carlos J. Gil Bellosta <cgb@datanalytics.com> escribió:> Hola, ¿qué tal? > > Al hilo de la sugerencia de usar subset, quiero subrayar la > advertencia de su página de ayuda: > > Warning: > > This is a convenience function intended for use interactively. > For programming it is better to use the standard subsetting > functions like ‘[’, and in particular the non-standard evaluation > of argument ‘subset’ can have unanticipated consequences. > > ¡Quién lo probó/sufrió lo sabe! > > Un saludo, > > Carlos J. Gil Bellosta > http://www.datanalytics.com > > > > El día 15 de febrero de 2012 14:48, Jorge I Velez > <jorgeivanvelez@gmail.com> escribió: > > Hola Jaume, > > > > Podrias utilizar una combinacion de ?subset y ?"%in%": > > > > subset(tusdatos, levels(tufactor) %in% tusvalores) > > > > Un saludo, > > Jorge.- > > > > > > 2012/2/15 Jaume Tormo <> > > > >> Hola eRReros, > >> > >> Necesito extraer datos de un dataframe según uno de los factores. > >> > >> La cosa sería algo así: > >> > >> df.nuevo <- iris[iris$Species=="setosa"|iris$Species=="virginica",] > >> > >> Que me crea un df nuevo solo con las filas en que Species es setosa o > >> virginica. > >> > >> El problema es que mi factor de interés tiene 22 niveles y a veces he de > >> seleccionar 13, 10, 8 niveles o números así. Esto implica escribir un | > con > >> su == correspondiente 13 o 8 veces. > >> Con subset ocurre lo mismo, si tienes que elegir muchos niveles al final > >> tienes que escribir un == o != para cada factor que eliges. > >> > >> ¿Sabéis si se puede abreviar de alguna manera? > >> > >> Me suena que esto se ha tratado en la lista pero lo he estado buscando > y no > >> lo he encontrado, si alguien encuentra aquel mensaje... > >> > >> Gracias. > >> > >> > >> > >> -- > >> Jaume Tormo Blanes > >> IMEM Ramon Margalef. > >> Carretera San Vicente del Raspeig s/n > >> 03690 San Vicente del Raspeig - Alicante > >> www.ua.es > >> acercad.wordpress.com > >> > >> [[alternative HTML version deleted]] > >> > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es@r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > >> > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >-- Jaume Tormo Blanes IMEM Ramon Margalef. Carretera San Vicente del Raspeig s/n 03690 San Vicente del Raspeig - Alicante www.ua.es acercad.wordpress.com [[alternative HTML version deleted]]