R中的情况

Case when situation in R

这是示例数据集和我知道如何执行的第一个命令。我希望命令中未列出的所有其他内容都是 areatype 04。我知道我可以在这个简单的示例中列出这三个。然而,实际上我还有 35 种其他可能性需要编码为 areatype 04。我可以在最后一行代码中添加一些内容,表示“如果这样,则为 07,但如果有其他情况,则为 04”

  area <- c("000995","000996","000001","000005","000998","000007")
  areatype<- c("","","","","","")

  list <- data.frame(county,areatype)

  list <- list %>% mutate(areatype=case_when(area=='000995'~'07',area=='000996'~'07')

我们可以使用 %in% 并指定 TRUE 作为 else 选项,即如果我们不指定 TRUE,默认情况下它将被替换为 NA

library(dplyr)
list %>% 
   mutate(areatype = case_when(county %in% c('000995', '000996')~'07', 
          TRUE ~ '04'))

注意:list 是函数名,即避免使用函数名命名对象

在 base R 中你也可以使用 ifelse:

list$areatype <- ifelse(list$area %in% c("000995", "000996"), "07", "04")

或者,如果您有很多 area 具有顺序后缀的值,您可以执行以下操作:

match <- grepl(paste(do.call(sprintf, list("%i$", 995:996)), collapse = "|"), list$area)
list$areatype <- ifelse(match, "07", "04")

对于 list$area 中以 995996FALSE 结尾的任何元素,第一行将 return TRUE 否则.