如何在R语言中写出案例声明(有例子)

61 阅读1分钟

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()**函数中指定的名称。