搜尋感興趣的網誌

所有文章連結

2022年3月24日 星期四

R Packages dplyr - group_by | R包dplyr - group_by

 


group_by的用處將選擇的欄位變量分組,可以單獨使用,但更多的是結合其他函數(select、filter、summaise、mutate)進行計算輸出,通常都是與summarise進行統計的計算,要注意的是進行分組統計時,最好先將欄位的型態、錯誤數值調整好,才不會出來的結果不盡理想。


基本語法

group_by(dataset, 想分組的欄位變量..)



先來創建一個基本的tibble進行演示

# 創建一個tibble存入數值
num_df <- tibble(
    number = c(1, 2, -1, 5, 8, 9),
    letter = c("a", "b", "c", "a", "c", "a")
)

# 輸出結果
r$> num_df # A tibble: 6 x 2 number letter <dbl> <chr> 1 1 a 2 2 b 3 -1 c 4 5 a 5 8 c 6 9 a


先進行基本的分組試試看,沒有設定分組後的計算方式,出來的結果也沒有甚麼變化

# 將letter分組
group_by(num_df, letter)

# 輸出結果
r$> group_by(num_df, letter) # A tibble: 6 x 2 # Groups: letter [3] number letter <dbl> <chr> 1 1 a 2 2 b 3 -1 c 4 5 a 5 8 c 6 9 a


加入通道與summarise計算各個字母對應的平均值,a(1 + 5 + 8) / 3 >> 5,b(2) / 1 >> 2,c(-1 + 8) / 2 >> 3.5

# 將letter分組後計算平均值
num_df <- group_by(num_df, letter) %>%
    summarise(
        number = mean(number)
        )

# 輸出結果
r$> num_df # A tibble: 3 x 2 letter number <chr> <dbl> 1 a 5 2 b 2 3 c 3.5


添加filter過濾會有比較特殊的情況要小心使用,分組完成後再進行過濾或者分組與過濾一同進行會產生不同的結果。

# 將letter分組存入變量
num_df_v1 <- group_by(num_df, letter)
# 將分組完成的變量進行篩選
num_df_v1 <- filter(num_df_v1, number < 1)

# 輸出結果
r$> num_df_v1 # A tibble: 1 x 2 # Groups: letter [1] number letter <dbl> <chr> 1 -1 c

# 加上pipes直接計算
num_df_v2 <- num_df %>%
    group_by(letter) %>%
    filter(
        number < -1
    )

# 輸出結果 >> 數值是空的
r$> num_df_v2 # A tibble: 0 x 2 # Groups: letter [0] # ... with 2 variables: number <dbl>, letter <chr>


至於配合mutate使用上來說,分開使用或是結合pipes都沒有filter的狀況

# 將letter分組存入變量
num_df_v1 <- group_by(num_df, letter)
# 將分組完成的變量搭配mutate
num_df_v1 <- mutate(num_df_v1, new_number = mean(number))

# 輸出結果
r$> num_df_v1 # A tibble: 6 x 3 # Groups: letter [3] number letter new_number <dbl> <chr> <dbl> 1 1 a 5 2 2 b 2 3 -1 c 3.5 4 5 a 5 5 8 c 3.5 6 9 a 5

# 加上pipes直接計算
num_df_v2 <- num_df %>%
    group_by(letter) %>%
    mutate(new_number = mean(number))

# 輸出結果
r$> num_df_v2 # A tibble: 6 x 3 # Groups: letter [3] number letter new_number <dbl> <chr> <dbl> 1 1 a 5 2 2 b 2 3 -1 c 3.5 4 5 a 5 5 8 c 3.5 6 9 a 5





















沒有留言:

張貼留言

其他文章

看看精選文章

納希克房價分析 | Nashik Apartment Price Analyze – 語法解析(上)

  這次 Nashik 的房價分析有上傳至 Kaggle ,有興趣的朋友可以前往閱覽, RMarkdown PDF 報告存放在 Google 雲端,程式碼則是存放於 Github ,照慣例會分享好用的函式語法,雖說基本的 Packages 與語法可能很多人都會完整的閱覽,但是實際...