优秀的编程知识分享平台

网站首页 > 技术文章 正文

R数据分析:case_when的用法(r语言casewhen常见问题)

nanyue 2024-07-20 23:45:32 技术文章 11 ℃

今天看了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数据分析:如何用R做数据模拟

R数据分析:stargazer给你一个漂亮的可以直接发表的结果表格

R数据分析:R Markdown:数据分析过程报告利器,你必须得学呀


最近发表
标签列表