R语言 使用case_when()函数的R Dplyr包中的case when语句

R语言 使用case_when()函数的R Dplyr包中的case when语句

本文主要讨论R编程语言中的case when语句,使用Dplyr包的case_when()函数。

case when 是一种机制,我们可以利用它将一堆if和else if语句矢量化。简单地说,使用case when语句,我们评估一个条件表达式,并在此基础上做出决定。例如,假设我们想检查一个候选人是否有资格投票。 为了解决这个问题,我们可以评估他的年龄,如果大于18岁,我们将允许他投票,否则他就没有资格。

R中的case when

R为我们提供了case_when()函数,使用该函数我们可以在R中实现case when。它等同于SQL中的 “case when “语句。

语法

case_when(expression)

这里。

  • expression。它代表一个条件表达式

方法1:在执行case when语句后,使用mutate函数创建一个新变量。

R中的Mutate函数用于添加新创建的变量,同时也保留了现有的变量。

例子

在这个例子中,我们正在创建一个数据框架,其中包含了汽车品牌、名称、价格和税收。现在,在mutate()函数的帮助下,我们正在创建一个额外的列(Price_Status),在评估了case_when()函数中使用的价格后,它将存储字符串字面意义:高、平均和低。

# 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"))
R

输出

使用case_when()函数的R Dplyr包中的case when语句

方法2:使用case when语句处理NA

再次查看我们在上面创建的数据框架中的Price列。有些汽车的价格值等于NA。在应用case_when()函数时,必须小心处理这个问题。R为我们提供了is.na()函数,我们可以用它来处理na值。

例子

在这个例子中,我们正在创建一个数据框架,其中包含了汽车品牌、名称、价格和税收。现在,在mutate()函数的帮助下,我们正在创建一个额外的列(Price_Status),在评估了case_when()函数中使用的价格后,它将存储字符串字面:高、平均和低。请注意,对于价格等于NA的汽车,我们将在Price_Status列的相应位置添加 “NIL”。

# 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"))
R

输出

使用case_when()函数的R Dplyr包中的case when语句

方法3:在R中使用开关语句

R允许我们使用sapply()与switch语句来构造一个新的变量,该变量可以作为数据框中的一列存在。

例子

在这个例子中,我们创建了一个名为 “Vehicle_Type “的额外列,我们使用sapply()函数和switch语句,对于各个品牌,我们将Vehicle_Type列中相应位置的值标记为 “Car”。

# 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_frameVehicle_Type <- sapply(data_frameBrand, switch, "Tata Motors"='Car', 
                                  "Mahindra"='Car', "Maruti Suzuki" = 'Car')
  
data_frame
R

输出

使用case_when()函数的R Dplyr包中的case when语句

方法4:在向量中使用case_when

R还提供了使用case_when来操作向量的工具。

例子

考虑一下下面的源代码。在这个例子中,我们首先检查向量中的当前值是否能被4整除,如果能被整除,我们就用字符串 “Yes “替换4的倍数。

例子

# 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)
)
R

输出

使用case_when()函数的R Dplyr包中的case when语句

在向量中使用case_when

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册