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
中以 995
或 996
和 FALSE
结尾的任何元素,第一行将 return TRUE
否则.
这是示例数据集和我知道如何执行的第一个命令。我希望命令中未列出的所有其他内容都是 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
中以 995
或 996
和 FALSE
结尾的任何元素,第一行将 return TRUE
否则.