tidyverse中的case_when()函数是一个非常强大的函数,可以用来进行多条件判断和赋值操作。首先,case_when()函数需要至少两个参数:一个是要进行判断的向量,另一个是要进行赋值的向量。例如:
library(tidyverse)
df <- tibble(x = 1:10)
df %>%
mutate(y = case_when(
x < 5 ~ "low",
x >= 5 & x < 8 ~ "medium",
x >= 8 ~ "high"
))
以上代码根据x列的数字大小来给y列赋予不同的值,即:x < 5时,将y赋值为"low";x >= 5 & x < 8时,将y赋值为"medium";x >= 8时,将y赋值为"high"。
这个代码块中,我们创建了一个数据框df,其中包含一个名为x的向量,它的值从1到10。然后我们使用mutate()函数来创建一个新的向量y,用来存储根据x的值进行赋值的结果。
需要注意的是,case_when()函数中的条件是从上到下依次进行判断的,如果某个条件被满足了,就不会再继续进行后面的条件判断了。因此,我们需要将条件按照优先级从高到低进行排列。
除了基本的条件判断外,case_when()函数还支持一些常用的函数,例如is.na()、is.null()等。例如下面的代码:
df %>%
mutate(z = case_when(
is.na(x) ~ "missing",
x < 5 ~ "low",
is.null(x) ~ "null",
x >= 5 & x < 8 ~ "medium",
x >= 8 ~ "high"
))
在这个代码块中,我们在判断条件中使用了is.na()和is.null()函数来判断x是否为缺失值或空值。需要注意的是,在判断缺失值时,我们需要将判断缺失值的条件放在最前面,否则后面的条件判断可能会出现错误。