今天看了case_when的用法,基本上和ifelse差不多,但是idelse只有2個判斷結果:TRUE or FALSE,這個在實際數據分析中肯定是不夠用的,所以今天給大家寫寫case_when.
實例操練
先來看一個實際的使用例子,感受一下:
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#> #> 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的,加油。
(站外鏈接發不了,請關注後私信回覆“數據鏈接”獲取本頭條號所有使用數據)
【來源:沒有酒的酒窩】
聲明:轉載此文是出於傳遞更多信息之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯繫,我們將及時更正、刪除,謝謝。 郵箱地址:[email protected]