iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
AI/ ML & Data

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

Day14:使用dplyr轉換資料-Summary Functions(1)

  • 分享至 

  • xImage
  •  

雜談
感謝obarisk邦友在Day11的回覆,也感謝提供實作自訂向量化函式,我後來也有在Stack Overflow看到類似的討論How to define a vectorized function in R,而在cheatsheet會提到那些韓函式屬於vectorized functions,其定義是以向量作為輸入,並輸出與輸入相同長度的向量,應該也如obarisk在Day9提到的dplyr多有向量化。總之,感謝obarisk邦友的回饋。

正文

今天要來紀錄搭配summarize()的彙總函式(Summary Functions),彙總函式以向量輸出會得到單一值。

  1. dplyr::n(): 計算當前分組內的觀測值個數,通常用於得出每個分組的總數。
  2. dplyr::n_distinct(): 計算分組內唯一值的數量。
  3. sum(!is.na()): 計算非 NA 值的個數。
  4. mean(): 計算分組內的平均值。
  5. median(): 計算分組內的中位數。

計算每個汽缸數 (cyl) 分組中的汽車數量

mtcars |>
  group_by(cyl) |>
  summarize(
    count = n()
  )

https://ithelp.ithome.com.tw/upload/images/20240825/20168607wBlMdM31bV.png

計算每個汽缸數 (cyl) 分組中的唯一馬力 (hp) 數量

mtcars |>
  group_by(cyl) |>
  summarize(
    unique_hp = n_distinct(hp)
  )

https://ithelp.ithome.com.tw/upload/images/20240825/20168607da4DRtHsEf.png

創建新的範例資料集(有NA的資料集)

# 建立包含 NA 值的範例資料集
df <- data.frame(
  group = c("A", "A", "B", "B", "C", "C"),
  value = c(10, NA, 20, 30, NA, 40)
)

# 查看範例資料集
print(df)

https://ithelp.ithome.com.tw/upload/images/20240825/20168607xagtsf6lri.png

計算每個分組(group)中非缺失值(value)的數量。

df |>
  group_by(group) |>
  summarize(
    non_na_values = sum(!is.na(value))
  )

https://ithelp.ithome.com.tw/upload/images/20240825/20168607U9woUYXvgN.png

計算每個分組(group)中 value 的平均值,忽略 NA 值。

df |>
  group_by(group) |>
  summarize(
    avg_value = mean(value, na.rm = TRUE)  # 忽略NA值計算平均
  )

https://ithelp.ithome.com.tw/upload/images/20240825/20168607Obzw8WDXtw.png

計算每個分組(group)中 value 的中位數,忽略 NA 值。

df |>
  group_by(group) |>
  summarize(
    median_value = median(value, na.rm = TRUE)  # 忽略NA值計算中位數
  )

https://ithelp.ithome.com.tw/upload/images/20240825/20168607LcnEdNCUNU.png

參考資料:

  1. Data transformation with dplyr :: Cheatsheet

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

尚未有邦友留言

立即登入留言