iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
AI/ ML & Data

資料科學的小筆記系列 第 13

Day13:使用dplyr轉換資料-Vectorized Functions(5)

  • 分享至 

  • xImage
  •  

正文

今天要紀錄的函式:

  1. dplyr::case_when(): 多條件的 if_else(),根據多個條件來創建新的變數。依序檢查每個條件,並根據第一個符合的條件來給予對應的值。
  2. dplyr::coalesce(): 逐一檢查向量,並返回每個位置上第一個非 NA 的值。對於處理缺失值特別有用。
  3. dplyr::if_else(): 元素級的 if() + else(),它會根據條件判斷為每個元素返回對應的值,而且類型一致。
  4. dplyr::na_if(): 將特定值替換為 NA,用於處理資料中的特殊情況或異常值。
  5. pmax(): 元素級的最大值函數,從多個向量中逐元素返回最大值。
  6. pmin(): 元素級的最小值函數,從多個向量中逐元素返回最小值。

根據馬力 (hp) 將車輛分類為 "低功率"、"中功率" 或 "高功率"。

mtcars |>
  mutate(
    power_class = case_when(
      hp < 100 ~ "低功率",
      hp >= 100 & hp <= 200 ~ "中功率",
      hp > 200 ~ "高功率"
    )
  )

https://ithelp.ithome.com.tw/upload/images/20240824/20168607Qze23iM7VR.png

從三個變數中選擇第一個非 NA 的值

mtcars |>
  mutate(
    first_non_na = coalesce(mpg, hp, wt)
  )

https://ithelp.ithome.com.tw/upload/images/20240824/20168607R5N5dtjvBn.png

如果重量 (wt) 大於3,則標記為 "重",否則標記為 "輕"。

mtcars |>
  mutate(
    weight_class = if_else(wt > 3, "重", "輕")
  )

https://ithelp.ithome.com.tw/upload/images/20240824/20168607R14X3wJW6i.png

找出每輛車的gear和carb中的較大值。

mtcars |>
     mutate(
         max_gear_carb = pmax(gear, carb)
     )

https://ithelp.ithome.com.tw/upload/images/20240824/20168607dJLPHRwvdx.png

找出每輛車的gear和carb中的較小值。

mtcars |>
     mutate(
         min_gear_carb = pmin(gear, carb)
     )

https://ithelp.ithome.com.tw/upload/images/20240824/20168607OzZ9uPs4XJ.png

今天的小筆記就先到這邊,大家明天見~~

參考資料:

  1. Data transformation with dplyr :: Cheatsheet

上一篇
Day12:使用dplyr轉換資料-Vectorized Functions(4)
下一篇
Day14:使用dplyr轉換資料-Summary Functions(1)
系列文
資料科學的小筆記29
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言