Estimados colegas:Tengo un problema que debe de tener una solución simple pero ya me entrampe.tengo un conjunto de valores para ciertos elementos, y se debe asignar un valor ente 1 y 4, según un rango, he estado intentándolo hacer con switch pero no me ha funcionadola idea es la siguiente tengo el elemento 1, y se debe de asignar un valor de acuerdo a la siguiente tabla | 1 | 2 | 3 | 4 | | | | < 100 | 100-200 | 200-300 | >300 | | | de antemano agradezco la ayuda Saludos Enrique RAMOSIngeniero oficina de confiabilidadLAPEM - CFE [[alternative HTML version deleted]]
Estimado Enrique Ramos Hay muchas formas, depende el gusto personal, cuestiones de código, si yo puedo utilizo algo vectorizado. Mire este hipervínculo, es una simple búsqueda a su pregunta realizada por otra persona. https://stackoverflow.com/questions/4622060/case-statement-equivalent-in-r Javier Rubén Marcuzzi El jue., 5 mar. 2020 a las 16:42, Enrique RAMOS via R-help-es (< r-help-es en r-project.org>) escribió:> Estimados colegas:Tengo un problema que debe de tener una solución simple > pero ya me entrampe.tengo un conjunto de valores para ciertos elementos, y > se debe asignar un valor ente 1 y 4, según un rango, he estado intentándolo > hacer con switch pero no me ha funcionadola idea es la siguiente tengo el > elemento 1, y se debe de asignar un valor de acuerdo a la siguiente tabla > > | 1 | 2 | 3 | 4 | > | | > | > < 100 | 100-200 | 200-300 | >300 | > | | > > de antemano agradezco la ayuda > Saludos Enrique RAMOSIngeniero oficina de confiabilidadLAPEM - CFE > [[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]]
Como siempre ando apurado haciendo las tareas, siempre lo hago con ifelse aunque seguro hay alguna forma más eficiente, pero no he tenido tiempo de investigar. Algo así quizá: library(data.table) tus.datos <- as.data.table(tus.datos) tus.datos[ , newcol:=ifelse( oldcol < 100, 1, ifelse( oldcol < 200, 2 , ifelse( oldcol < 300, 3 , 4 ))) ] ojo con los límites xq has incluído el 200 en dos de los intervalos. Ojalá sirva. Saludos !! On 05-03-20 16:41, Enrique RAMOS via R-help-es wrote:> Estimados colegas:Tengo un problema que debe de tener una solución simple pero ya me entrampe.tengo un conjunto de valores para ciertos elementos, y se debe asignar un valor ente 1 y 4, según un rango, he estado intentándolo hacer con switch pero no me ha funcionadola idea es la siguiente tengo el elemento 1, y se debe de asignar un valor de acuerdo a la siguiente tabla > > | 1 | 2 | 3 | 4 | > | | > | > < 100 | 100-200 | 200-300 | >300 | > | | > > de antemano agradezco la ayuda > Saludos Enrique RAMOSIngeniero oficina de confiabilidadLAPEM - CFE > [[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
x <- seq(0, 350, 10) cut(x =x, breaks = c(min(x), 100, 200, 300, max(x)), labels = c("<100", "100-200", "200-300", ">300"), include.lowest = TRUE) cut(x =x, breaks = c(min(x), 100, 200, 300, max(x)), include.lowest = TRUE) El jue., 5 mar. 2020 a las 14:42, Enrique RAMOS via R-help-es (< r-help-es en r-project.org>) escribió:> Estimados colegas:Tengo un problema que debe de tener una solución simple > pero ya me entrampe.tengo un conjunto de valores para ciertos elementos, y > se debe asignar un valor ente 1 y 4, según un rango, he estado intentándolo > hacer con switch pero no me ha funcionadola idea es la siguiente tengo el > elemento 1, y se debe de asignar un valor de acuerdo a la siguiente tabla > > | 1 | 2 | 3 | 4 | > | | > | > < 100 | 100-200 | 200-300 | >300 | > | | > > de antemano agradezco la ayuda > Saludos Enrique RAMOSIngeniero oficina de confiabilidadLAPEM - CFE > [[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]]
Mil graciasideas interesantes para resolver el problema, las pruebo Saludos Enrique RAMOSIngeniero Oficina de confiabilidadLAPEM - CFE El jueves, 5 de marzo de 2020 17:41:31 GMT-7, Juan Carlos Lopez Mesa <jclopez5 en unal.edu.co> escribió: x <- seq(0, 350, 10) cut(x =x, breaks = c(min(x), 100, 200, 300, max(x)), labels = c("<100", "100-200", "200-300", ">300"), include.lowest = TRUE) cut(x =x, breaks = c(min(x), 100, 200, 300, max(x)), include.lowest = TRUE) El jue., 5 mar. 2020 a las 14:42, Enrique RAMOS via R-help-es (<r-help-es en r-project.org>) escribió: Estimados colegas:Tengo un problema que debe de tener una solución simple pero ya me entrampe.tengo un conjunto de valores para ciertos elementos, y se debe asignar un valor ente 1 y 4, según un rango, he estado intentándolo hacer con switch pero no me ha funcionadola idea es la siguiente tengo el elemento 1, y se debe de asignar un valor de acuerdo a la siguiente tabla | 1 | 2 | 3 | 4 | | | | < 100 | 100-200 | 200-300 | >300 | | | de antemano agradezco la ayuda Saludos Enrique RAMOSIngeniero oficina de confiabilidadLAPEM - CFE [[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]]