如何在 R 資料框中同時找到分組平均值和分組總和?


要同時找到分組平均值和分組總和,我們可以先將資料框轉換為 data.table 物件,然後應用 data.table 物件組的 sum 函式和 mean 函式,如下面的示例所示。

示例 1

以下程式碼片段建立了一個示例資料框 -

Group<-sample(LETTERS[1:4],20,replace=TRUE)
Rate<-rpois(20,5)
Score<-rpois(20,2)
df1<-data.frame(Group,Rate,Score)
df1

建立了以下資料框 -

 Group Rate Score
1  B   5    3
2  A   8    3
3  B   5    3
4  D   9    2
5  D   4    3
6  D   4    1
7  D   8    3
8  C   5    3
9  C   4    1
10 D   6    4
11 D   4    4
12 C   5    1
13 D   7    2
14 C   4    0
15 C   3    1
16 B   1    1
17 C   3    2
18 D   3    2
19 B   2    4
20 C   4    3

要載入 data.table 包,將 df1 轉換為 data.table 物件並找到分組平均值和分組總和,請將以下程式碼新增到上述程式碼片段中 -;

library(data.table)
DT1<-data.table(df1)
DT1[,list(Rate=sum(Rate),Score=mean(Score)),by="Group"]

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

  Group Rate Score
1:  B   13  2.750000
2:  A    8  3.000000
3:  D   45  2.625000
4:  C   28  1.571429

示例 2

以下程式碼片段建立了一個示例資料框 -

Class<-sample(c("First","Second","Third"),20,replace=TRUE)
Price<-sample(200:1000,20)
Sales<-sample(50:100,20)
df2<-data.frame(Class,Price,Sales)
df2

建立了以下資料框 -

   Class   Price Sales
1  Third   494   89
2  Second  222   90
3  First   466   53
4  First   425   94
5  First   567   66
6  Second  526   95
7  Third   443   97
8  Third   614   96
9  First   605   50
10 First   590  100
11 Second  853   92
12 First   818   73
13 Third   936   63
14 Second  932   68
15 First   677   88
16 First   851   80
17 Second  395   65
18 First   519   70
19 Second  804   77
20 Second  420   84

要將 df2 轉換為 data.table 物件並找到分組平均值和分組總和,請將以下程式碼新增到上述程式碼片段中 -

DT2<-data.table(df2)
DT2[,list(Sales=sum(Sales),Price=mean(Price)),by="Class"]

輸出

如果您將上面給出的所有程式碼片段作為單個程式執行,它將生成以下輸出 -

   Class   Sales  Price
1: Third   345  621.7500
2: Second  571  593.1429
3: First   674  613.1111

更新於: 2021年11月9日

132 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告