Este artículo se enfoca en la declaración case when en el lenguaje de programación R usando la función case_when() del paquete Dplyr.
Case when es un mecanismo mediante el cual podemos vectorizar un montón de declaraciones if y else if. En palabras simples, usando un caso cuando la declaración evaluamos una expresión de condición, y en base a eso tomamos decisiones. Por ejemplo, supongamos que queremos verificar si un candidato es elegible para emitir un voto. Para resolver este problema, podemos evaluar su edad y si es mayor de 18 años le permitiremos votar, de lo contrario no es elegible.
Caso cuando en R:
R nos proporciona la función case_when() mediante la cual podemos implementar case when en R. Es equivalente a la declaración «case when» en SQL.
Sintaxis:
case_when(expresión)
Aquí,
- expresión: Representa una expresión de condición
Método 1: Cree una nueva variable después de ejecutar la instrucción case when y usar la función mutar:
La función de mutación en R se usa para agregar variables recién creadas y también conserva las variables existentes.
Ejemplo:
En este ejemplo, estamos creando un marco de datos que contiene marcas de automóviles, nombres, precios e impuestos. Ahora, con la ayuda de la función mutate(), estamos creando una columna adicional (Price_Status) que almacenará literales de string: alto, promedio y bajo después de evaluar el precio utilizado dentro de la función case_when().
R
# Creating a new variable using case_when() and mutate() function # Import the library library(dplyr) # Creating a dataframe data_frame = data.frame(Brand=c("Maruti Suzuki", "Tata Motors", "Mahindra", "Mahindra", "Maruti Suzuki"), Car=c("Swift", "Nexon", "Thar", "Scorpio", "WagonR"), Price=c(400000, 1000000, 500000, 1200000, 900000), Tax=c(2000, 4000, 2500, 5000, 3500)) # Using case_when() to create new variable data_frame % > % mutate(Price_status=case_when(Price >= 500000 & Price <= 900000 ~ "Average", Price > 900000 ~ "High", TRUE ~ "Low"))
Producción:
Método 2: Manejo de NA usando Case when declaración
Mire la columna Precio del marco de datos que hemos creado arriba una vez más. Algunos autos tienen un valor de precio igual a NA. Al aplicar la función case_when(), esto debe manejarse con cuidado. R nos proporciona la función is.na() mediante la cual podemos manejar valores na.
Ejemplo:
En este ejemplo, estamos creando un marco de datos que contiene marcas de automóviles, nombres, precios e impuestos. Ahora, con la ayuda de la función mutate(), estamos creando una columna adicional (Price_Status) que almacenará literales de string: alto, promedio y bajo después de evaluar el precio utilizado dentro de la función case_when(). Tenga en cuenta que para los automóviles que tienen el precio igual a NA, estamos agregando «NIL», en la posición correspondiente de la columna Price_Status.
R
# Creating a new variable using case_when() and mutate() function # and handling unwanted values # Import the library library(dplyr) data_frame = data.frame(Brand=c("Maruti Suzuki", "Tata Motors", "Mahindra", "Mahindra", "Maruti Suzuki"), Car=c("Swift", "Nexon", "Thar", "Scorpio", "WagonR"), Price=c(400000, 1000000, 500000, 1200000, NA), Tax=c(2000, 4000, 2500, 5000, 3500)) # Case_when() to create new variable (or column) with NIL data_frame % > % mutate(Price_band=case_when(is.na(Price) ~ "NIL", Price >= 500000 & Price <= 900000 ~ "Average", Price > 900000 ~ "High", TRUE ~ "Low"))
Producción:
Método 3: usar la declaración de cambio en R
R nos permite usar sapply() con una declaración de cambio para construir una nueva variable que puede existir como una columna en el marco de datos.
Ejemplo:
En este ejemplo, hemos creado una columna adicional con el nombre «Vehicle_Type», estamos usando la función sapply() con una declaración de cambio y para las marcas respectivas, estamos marcando los valores de en la posición correspondiente de la columna Vehicle_Type como «Coche».
R
# R program using case_when through sapply() function # Import the library library(dplyr) # Creating a dataframe data_frame = data.frame(Brand = c("Maruti Suzuki","Tata Motors", "Mahindra","Mahindra", "Maruti Suzuki"), Car = c("Swift","Nexon","Thar", "Scorpio", "WagonR"), Price = c(400000,1000000,500000,1200000,NA), Tax = c(2000,4000,2500,5000,3500)) # Case_when() to create new variable data_frame$Vehicle_Type <- sapply(data_frame$Brand, switch, "Tata Motors"='Car', "Mahindra"='Car', "Maruti Suzuki" = 'Car') data_frame
Producción:
Método 4: Usar case_when en vector
R también proporciona la posibilidad de usar case_when para manipular un vector.
Ejemplo:
Considere el siguiente código fuente. En este ejemplo, primero verificamos si el valor actual en el vector es divisible por 4, y si es así, reemplazamos los múltiplos de 4 con la string «Sí».
Ejemplo:
R
# R program using case_when() function to manipulate a vector # Importing library library(dplyr) # Creating a vector vector <- seq(2, 20, by = 2) # Using case_when() function case_when( # If the value is divisible by 4 # then replace it with "Yes" vector %% 4 == 0 ~ "Yes", TRUE ~ as.character(vector) )
Producción: