如何在R数据框中的这些列中找到由其他列名和公共值汇总的列的平均值?

要在 R 数据框中的这些列中找到由其他列名称和公共值汇总的列的平均值,我们可以按照以下步骤操作 -

  • 首先,创建一个数据框。

  • 然后,使用 reshape2 包中的熔化函数熔化数据框。

  • 之后,使用 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
输出结果

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

 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 包中的熔化函数来熔化数据框 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.NoScore 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

猜你喜欢