case 语句是一种通过条件并在满足第一个条件时返回一个值的语句类型。
在R中实现case语句的最简单方法是使用dplyr包中的case_when()函数:
library(dplyr)
df %>%
mutate(new_column = case_when(
col1 < 9 ~ 'value1',
col1 < 12 ~ 'value2',
col1 < 15 ~ 'value3',
TRUE ~ 'Great'))
这个特殊的函数查看名为col1的列中的值并返回:
- "value1",如果col1中的值小于9
- 如果col1中的值小于12,则返回 "value2"。
- "value3" 如果col2中的值小于15
- "value4" 如果前面的条件都不是真的
注意,TRUE等同于 "else "语句。
下面的例子说明了如何在实践中使用这个函数。
例子:R中的案例语句
假设我们在R中拥有以下数据框:
#create data frame
df <- data.frame(player=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),
points=c(6, 8, 9, 9, 12, 14, 15, 17, 19, 22))
#view data frame
df
player points
1 1 6
2 2 8
3 3 9
4 4 9
5 5 12
6 6 14
7 7 15
8 8 17
9 9 19
10 10 22
我们可以用下面的语法写一个case语句,创建一个新的列,叫做class,其值由point列的值决定:
library(dplyr)
#create new column using case statement
df %>%
mutate(class = case_when(
points < 9 ~ 'Bad',
points < 12 ~ 'OK',
points < 15 ~ 'Good',
TRUE ~ 'Great'))
player points class
1 1 6 Bad
2 2 8 Bad
3 3 9 OK
4 4 9 OK
5 5 12 Good
6 6 14 Good
7 7 15 Great
8 8 17 Great
9 9 19 Great
10 10 22 Great
case语句看了看积分列中的值,然后返回:
- 如果积分列中的值小于9,则返回 "坏"。
- 如果积分列中的值小于12,则为 "好"。
- "好",如果积分栏中的数值小于15
- 如果前面的条件都不成立,则为 "好"。
新的列被称为class,因为这是我们在**mutate()**函数中指定的名称。