介紹如何使用 R 的 dplyr
套件,將 data frame 重複的名稱的列合併,加總各欄位值。
假設我們有一張 data frame 表格,資料如下:
# 原始資料 df <- data.frame( x = c("A","B","A","B", "B"), y = 1:5, z = 2:6 ) df
x y z 1 A 1 2 2 B 2 3 3 A 3 4 4 B 4 5 5 B 5 6
若想要將表格中的資料依據 x
欄位合併,將相同名稱的列合併為一列,其餘的數值欄位以加總的方式合併,這種狀況就可以使用 dplyr
套件來處理。
首先安裝並載入 dplyr
套件:
# 安裝 dplyr 套件 install.packages("dplyr") # 載入 dplyr 套件 library(dplyr)
接著將 data frame 以 group_by
分組之後,再以 summarise_all
配合 sum
以加總的方式合併重複的列:
# 分組加總 df %>% group_by(x) %>% summarise_all(sum)
# A tibble: 2 x 3 x y z <fct> <int> <int> 1 A 4 6 2 B 11 14
若要以平均值的方式合併重複的列,可將 sum
函數替換為 mean
:
# 分組計算平均 df %>% group_by(x) %>% summarise_all(mean)
# A tibble: 2 x 3 x y z <fct> <dbl> <dbl> 1 A 2 3 2 B 3.67 4.67
若要同時以加總與平均值的方式合併重複列,可以同時將 sum
與 mean
函數傳入 summarise_all
中:
df %>% group_by(x) %>% summarise_all(list(sum = sum, mean = mean))
# A tibble: 2 x 5 x y_sum z_sum y_mean z_mean 1 A 4 6 2 3 2 B 11 14 3.67 4.67
參考資料:Biostars