Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la CLASE-01 salió en el primer GRUPO ya no salga más. GRUPO ORDEN CLASE A 1 CLASE-01 A 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 B 2 CLASE-02 B 5 CLASE-03 B 7 CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 2 CLASE-02 F 5 CLASE-03 F 7 CLASE-05 G 1 CLASE-07 Tendría que quedarme tal que así: GRUPO ORDEN CLASE A 1 CLASE-01 B 2 CLASE-02 C 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 7 CLASE-05 G 1 CLASE-07 Un saludo Jose Luis [[alternative HTML version deleted]]
Adjunto txt por si no se ve bien, disculpas El Miércoles 7 de marzo de 2018 11:53, jose luis via R-help-es <r-help-es en r-project.org> escribió: Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la CLASE-01 salió en el primer GRUPO ya no salga más. GRUPO ORDEN CLASE A 1 CLASE-01 A 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 B 2 CLASE-02 B 5 CLASE-03 B 7 CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 2 CLASE-02 F 5 CLASE-03 F 7 CLASE-05 G 1 CLASE-07 Tendría que quedarme tal que así: GRUPO ORDEN CLASE A 1 CLASE-01 B 2 CLASE-02 C 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 7 CLASE-05 G 1 CLASE-07 Un saludo Jose Luis [[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 ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20180307/050aa5d1/attachment.html> ------------ próxima parte ------------ An embedded and charset-unspecified text was scrubbed... Name: Datos.txt URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20180307/050aa5d1/attachment.txt>
Una forma sería ésta:> datosGRUPO ORDEN CLASE 1 A 1 CLASE-01 2 A 2 CLASE-02 3 A 5 CLASE-03 4 B 1 CLASE-01 5 B 2 CLASE-02 6 B 5 CLASE-03 7 B 7 CLASE-04 8 C 2 CLASE-02 9 C 5 CLASE-03 10 C 7 CLASE-04 11 D 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 14 F 2 CLASE-02 15 F 5 CLASE-03 16 F 7 CLASE-05 17 G 1 CLASE-07> clases = attr(table(datos$CLASE), "names")> grupos = attr(table(datos$GRUPO), "names")> datosFinal = datos[1,]> clases = clases[-1]> grupos = grupos[-1]> for (g in grupos){+ selec = datos[datos$GRUPO ==g & datos$CLASE %in% clases,] + selec = selec[1,] + clases = clases[clases != selec$CLASE] + datosFinal = rbind(datosFinal, selec) + }> datosFinalGRUPO ORDEN CLASE 1 A 1 CLASE-01 5 B 2 CLASE-02 9 C 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 16 F 7 CLASE-05 17 G 1 CLASE-07 Básicamente es montar un cola con las clases para ir quitándole el valor que va saliendo en cada grupo. Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de jose luis via R-help-es Enviado el: miércoles, 07 de marzo de 2018 12:01 Para: jose luis <pepeceb en yahoo.es>; Lista R. <r-help-es en r-project.org> Asunto: Re: [R-es] Más filtrado de variables Adjunto txt por si no se ve bien, disculpas El Miércoles 7 de marzo de 2018 11:53, jose luis via R-help-es <r-help-es en r-project.org <mailto:r-help-es en r-project.org> > escribió: Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la CLASE-01 salió en el primer GRUPO ya no salga más. GRUPO ORDEN CLASE A 1 CLASE-01 A 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 B 2 CLASE-02 B 5 CLASE-03 B 7 CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 2 CLASE-02 F 5 CLASE-03 F 7 CLASE-05 G 1 CLASE-07 Tendría que quedarme tal que así: GRUPO ORDEN CLASE A 1 CLASE-01 B 2 CLASE-02 C 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 7 CLASE-05 G 1 CLASE-07 Un saludo Jose Luis [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org <mailto:R-help-es en r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Estimado José Luis Supongamos tres datos, los cuáles tienen tres columnas 1,1,1 2,1,1 2,1,2 En este ejemplo está ordenado, pero usted al 2,1,1 no lo desea porque el 1 (clase, último), se repite con el 1 del 1,1,1, todo quedaría filtrado de esta forma: 1,1,1 2,1,2 Si comprendí su problema yo lo realizaría con números, cada clase tiene un número, y luego crearía un auxiliar y lo incrementaría (clase<-clase+1), de tal forma que luego de tener todo ordenado de menor a mayor podría recorrer con un for buscando el que ya está incrementado (lo incrementé en el ciclo anterior del for o en el inicio vale 1). Es una idea para escribir el algoritmo. Javier Rubén Marcuzzi El 7 de marzo de 2018, 8:00, jose luis via R-help-es < r-help-es en r-project.org> escribió:> Adjunto txt por si no se ve bien, disculpas > > > El Miércoles 7 de marzo de 2018 11:53, jose luis via R-help-es < > r-help-es en r-project.org> escribió: > > > Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero > seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser > con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la > CLASE-01 salió en el primer GRUPO ya no salga más. > > > > GRUPO ORDEN CLASE A 1 CLASE-01 A > 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 > B 2 CLASE-02 B 5 CLASE-03 B 7 > CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C > 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 > E 1 CLASE-06 F 2 CLASE-02 F 5 > CLASE-03 F 7 CLASE-05 G 1 CLASE-07 > Tendría que quedarme tal que así: > > GRUPO ORDEN CLASE A 1 CLASE-01 B 2 > CLASE-02 C 5 CLASE-03 D 7 > CLASE-04 E 1 CLASE-06 F 7 CLASE-05 > G 1 CLASE-07 > > Un saludo > > Jose Luis > > [[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 > > > _______________________________________________ > 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]]
Hola, Aquí, tienes otra forma que es bastante sencilla de leer/entender... Lines <- " GRUPO ORDEN CLASE 1 A 1 CLASE-01 2 A 2 CLASE-02 3 A 5 CLASE-03 4 B 1 CLASE-01 5 B 2 CLASE-02 6 B 5 CLASE-03 7 B 7 CLASE-04 8 C 2 CLASE-02 9 C 5 CLASE-03 10 C 7 CLASE-04 11 D 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 14 F 2 CLASE-02 15 F 5 CLASE-03 16 F 7 CLASE-05 17 G 1 CLASE-07" library(dplyr) DF %>% group_by(GRUPO) %>% select(GRUPO, ORDEN, CLASE) %>% filter(ORDEN == min(ORDEN)) Y que produce este resultado...> library(dplyr) > DF %>%+ group_by(GRUPO) %>% + select(GRUPO, ORDEN, CLASE) %>% + filter(ORDEN == min(ORDEN)) # A tibble: 7 x 3 # Groups: GRUPO [7] GRUPO ORDEN CLASE <chr> <int> <chr> 1 A 1 CLASE-01 2 B 1 CLASE-01 3 C 2 CLASE-02 4 D 5 CLASE-03 5 E 1 CLASE-06 6 F 2 CLASE-02 7 G 1 CLASE-07 Saludos, Carlos Ortega www.qualityexcellence.es El 7 de marzo de 2018, 12:00, jose luis via R-help-es < r-help-es en r-project.org> escribió:> Adjunto txt por si no se ve bien, disculpas > > > El Miércoles 7 de marzo de 2018 11:53, jose luis via R-help-es < > r-help-es en r-project.org> escribió: > > > Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero > seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser > con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la > CLASE-01 salió en el primer GRUPO ya no salga más. > > > > GRUPO ORDEN CLASE A 1 CLASE-01 A > 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 > B 2 CLASE-02 B 5 CLASE-03 B 7 > CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C > 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 > E 1 CLASE-06 F 2 CLASE-02 F 5 > CLASE-03 F 7 CLASE-05 G 1 CLASE-07 > Tendría que quedarme tal que así: > > GRUPO ORDEN CLASE A 1 CLASE-01 B 2 > CLASE-02 C 5 CLASE-03 D 7 > CLASE-04 E 1 CLASE-06 F 7 CLASE-05 > G 1 CLASE-07 > > Un saludo > > Jose Luis > > [[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 > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Perdona. A ver ahora:> datosGRUPO ORDEN CLASE 1 A 1 CLASE-01 2 A 2 CLASE-02 3 A 5 CLASE-03 4 B 1 CLASE-01 5 B 2 CLASE-02 6 B 5 CLASE-03 7 B 7 CLASE-04 8 C 2 CLASE-02 9 C 5 CLASE-03 10 C 7 CLASE-04 11 D 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 14 F 2 CLASE-02 15 F 5 CLASE-03 16 F 7 CLASE-05 17 G 1 CLASE-07> clases = attr(table(datos$CLASE), "names")> grupos = attr(table(datos$GRUPO), "names")> datosFinal = datos[1,]> clases = clases[-1]> grupos = grupos[-1]> for (g in grupos){+ selec = datos[datos$GRUPO ==g & datos$CLASE %in% clases,] + selec = selec[1,] + clases = clases[clases != selec$CLASE] + datosFinal = rbind(datosFinal, selec) + }> datosFinalGRUPO ORDEN CLASE 1 A 1 CLASE-01 5 B 2 CLASE-02 9 C 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 16 F 7 CLASE-05 17 G 1 CLASE-07 Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ De: Isidro Hidalgo Arellano [mailto:ihidalgo en jccm.es] Enviado el: miércoles, 07 de marzo de 2018 13:00 Para: 'jose luis' <pepeceb en yahoo.es>; 'r-help-es en r-project.org' <r-help-es en r-project.org> Asunto: RE: [R-es] Más filtrado de variables Una forma sería ésta:> datosGRUPO ORDEN CLASE 1 A 1 CLASE-01 2 A 2 CLASE-02 3 A 5 CLASE-03 4 B 1 CLASE-01 5 B 2 CLASE-02 6 B 5 CLASE-03 7 B 7 CLASE-04 8 C 2 CLASE-02 9 C 5 CLASE-03 10 C 7 CLASE-04 11 D 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 14 F 2 CLASE-02 15 F 5 CLASE-03 16 F 7 CLASE-05 17 G 1 CLASE-07> clases = attr(table(datos$CLASE), "names")> grupos = attr(table(datos$GRUPO), "names")> datosFinal = datos[1,]> clases = clases[-1]> grupos = grupos[-1]> for (g in grupos){+ selec = datos[datos$GRUPO ==g & datos$CLASE %in% clases,] + selec = selec[1,] + clases = clases[clases != selec$CLASE] + datosFinal = rbind(datosFinal, selec) + }> datosFinalGRUPO ORDEN CLASE 1 A 1 CLASE-01 5 B 2 CLASE-02 9 C 5 CLASE-03 12 D 7 CLASE-04 13 E 1 CLASE-06 16 F 7 CLASE-05 17 G 1 CLASE-07 Básicamente es montar un cola con las clases para ir quitándole el valor que va saliendo en cada grupo. Un saludo Isidro Hidalgo Arellano Observatorio del Mercado de Trabajo Consejería de Economía, Empresas y Empleo http://www.castillalamancha.es/ De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de jose luis via R-help-es Enviado el: miércoles, 07 de marzo de 2018 12:01 Para: jose luis <pepeceb en yahoo.es <mailto:pepeceb en yahoo.es> >; Lista R. <r-help-es en r-project.org <mailto:r-help-es en r-project.org> > Asunto: Re: [R-es] Más filtrado de variables Adjunto txt por si no se ve bien, disculpas El Miércoles 7 de marzo de 2018 11:53, jose luis via R-help-es <r-help-es en r-project.org <mailto:r-help-es en r-project.org> > escribió: Buenas. A ver si a alguien se le ocurre cómo hacer este filtrado. Quiero seleccionar para cada GRUPO el numero de ORDEN más pequeño (que podría ser con wich.min(ORDEN)), pero sin que se repita la CLASE, de modo que si la CLASE-01 salió en el primer GRUPO ya no salga más. GRUPO ORDEN CLASE A 1 CLASE-01 A 2 CLASE-02 A 5 CLASE-03 B 1 CLASE-01 B 2 CLASE-02 B 5 CLASE-03 B 7 CLASE-04 C 2 CLASE-02 C 5 CLASE-03 C 7 CLASE-04 D 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 2 CLASE-02 F 5 CLASE-03 F 7 CLASE-05 G 1 CLASE-07 Tendría que quedarme tal que así: GRUPO ORDEN CLASE A 1 CLASE-01 B 2 CLASE-02 C 5 CLASE-03 D 7 CLASE-04 E 1 CLASE-06 F 7 CLASE-05 G 1 CLASE-07 Un saludo Jose Luis [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org <mailto:R-help-es en r-project.org> https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]