如何在 R 資料框中查詢按其他列名和這些列中的公共值彙總的列的平均值?


為了找到 R 資料框中按其他列名和這些列中的公共值彙總的列的平均值,我們可以按照以下步驟操作:

  • 首先,建立一個數據框。

  • 然後,使用 reshape2 包中的 melt 函式將資料框熔化。

  • 之後,使用 dcast 函式查詢按其他列名和這些列中的公共值彙總的列的平均值。

示例

建立資料框

讓我們建立一個如下所示的資料框:

S.No<-1:25
Grp1<-sample(1:3,25,replace=TRUE)
Grp2<-sample(1:3,25,replace=TRUE)
Score<-sample(1:50,25)
df<-data.frame(S.No,Grp1,Grp2,Score)
df

輸出

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出會在您的系統上有所不同):

 S.No Grp1 Grp2 Score
1   1    1  3   39
2   2    1  1   50
3   3    2  2    5
4   4    1  1   28
5   5    3  3    3
6   6    2  1   20
7   7    3  2   10
8   8    2  2   41
9   9    2  3   25
10 10    3  1   11
11 11    3  1   13
12 12    2  1    2
13 13    2  2   22
14 14    2  1   30
15 15    3  1   15
16 16    1  3   29
17 17    3  3    1
18 18    1  1   24
19 19    3  3   34
20 20    1  2   44
21 21    3  3   48
22 22    3  2   43
23 23    1  2   33
24 24    2  2   19
25 25    3  3   42

熔化資料框

使用 reshape2 包中的 melt 函式來熔化資料框 df:

S.No<-1:25
Grp1<-sample(1:3,25,replace=TRUE)
Grp2<-sample(1:3,25,replace=TRUE)
Score<-sample(1:50,25)
df<-data.frame(S.No,Grp1,Grp2,Score)
library(reshape2)
df_new<-melt(df,id.vars=c("S.No","Score"))
df_new

輸出

  S.No Score variable value
1   1   28    Grp1    2
2   2   14    Grp1    3
3   3   17    Grp1    2
4   4   36    Grp1    3
5   5   47    Grp1    3
6   6   27    Grp1    2
7   7   48    Grp1    1
8   8   50    Grp1    3
9   9   29    Grp1    3
10 10   20    Grp1    2
11 11   32    Grp1    1
12 12    9    Grp1    3
13 13   16    Grp1    1
14 14    3    Grp1    1
15 15   42    Grp1    3
16 16   26    Grp1    2
17 17   44    Grp1    2
18 18   39    Grp1    2
19 19   46    Grp1    1
20 20   19    Grp1    2
21 21   22    Grp1    2
22 22   23    Grp1    3
23 23   49    Grp1    3
24 24    8    Grp1    1
25 25   30    Grp1    3
26  1   28    Grp2    2
27  2   14    Grp2    2
28  3   17    Grp2    2
29  4   36    Grp2    2
30  5   47    Grp2    3
31  6   27    Grp2    1
32  7   48    Grp2    2
33  8   50    Grp2    1
34  9   29    Grp2    1
35 10   20    Grp2    2
36 11   32    Grp2    3
37 12    9    Grp2    2
38 13   16    Grp2    1
39 14    3    Grp2    1
40 15   42    Grp2    2
41 16   26    Grp2    3
42 17   44    Grp2    1
43 18   39    Grp2    2
44 19   46    Grp2    3
45 20   19    Grp2    2
46 21   22    Grp2    1
47 22   23    Grp2    2
48 23   49    Grp2    3
49 24    8    Grp2    3
50 25   30    Grp2    3

查詢按其他列名和公共值彙總的列的平均值

使用 dcast 函式查詢按列名 Grp1 和 Grp2 以及這些分組列中 1、2 和 3 的公共值彙總的 Score 的平均值:

S.No<-1:25
Grp1<-sample(1:3,25,replace=TRUE)
Grp2<-sample(1:3,25,replace=TRUE)
Score<-sample(1:50,25)
df<-data.frame(S.No,Grp1,Grp2,Score)
library(reshape2)
df_new<-melt(df,id.vars=c("S.No","Score"))
dcast(df_new,variable~value,value.var="Score",fun.aggregate=mean)

輸出

  variable   1      2       3
1 Grp1   25.50000 26.88889 32.9
2 Grp2   27.28571 26.81818 34.0

更新於: 2021年11月11日

47 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告