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]]