要在 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