Skip to content

[R-es] uso de switch o alternativa

5 messages · Enrique RAMOS, Javier Marcuzzi, eric +1 more

#
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
#
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ó:

  
  
#
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:
#
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ó:

  
  
#
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