今天看了case_when的用法,基本上和ifelse差不多,但是idelse只有2个判断结果:TRUE or FALSE,这个在实际数据分析中肯定是不够用的,所以今天给大家写写case_when.
实例操练
先来看一个实际的使用例子,感受一下:
x <- c(-2, -1, 0, 1, 2)
case_when(x < 0 ~ "Negative",
x > 0 ~ "Positive",
TRUE ~ "Zero")
#> [1] "Negative" "Negative" "Zero" "Positive" "Positive"
上面的输出如果用ifelse将会很麻烦,你得写一个嵌套语句出来,用casewhen就很直观了。另外的用的比较多的就是定义分类变量的时候,比如,我们现在想看一看英国不同地区的谋杀率,首先我们要根据不同的标准将所有的州划给地区New England, West Coast, South, and other,这个时候就可以使用case_when.
murders %>%
mutate(group = case_when(
abb %in% c("ME", "NH", "VT", "MA", "RI", "CT") ~ "New England",
abb %in% c("WA", "OR", "CA") ~ "West Coast",
region == "South" ~ "South",
TRUE ~ "Other")) %>%
group_by(group) %>%
summarize(rate = sum(total) / sum(population) * 10^5)
#> `summarise()` ungrouping output (override with `.groups` argument)
#> # A tibble: 4 x 2
#> group rate
#> <chr> <dbl>
#> 1 New England 1.72
#> 2 Other 2.71
#> 3 South 3.63
#> 4 West Coast 2.90
解释一下上面的代码:如果abb属于"ME", "NH", "VT", "MA", "RI", "CT"这几个州,我们将它分给"New England"地区,相应的如果在"WA", "OR", "CA"这几个州就是"West Coast"地区,这样就划分好了我们的分类变量-group。
然后根据group进行分组,使用summarize得到各个地区的谋杀率。完美!
小结
case_when在定义分类变量的时候很好使,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python和R的,加油。
(站外链接发不了,请关注后私信回复“数据链接”获取本头条号所有使用数据)
往期内容:
R数据分析:stargazer给你一个漂亮的可以直接发表的结果表格
R数据分析:R Markdown:数据分析过程报告利器,你必须得学呀