如何计算平均使用申请此数据帧在r

问题描述:

嗨我有df(te_1_melt)像下面,我想计算每个tis的平均值。我如何使用r应用程序?如何计算平均使用申请此数据帧在r

    samples variable  value  tis 
1 GCIMB211_SHADE_INTERNODE  PC1 -0.10329820 INTERNODE 
2  GCIMB211_SHADE_LEAF  PC1 0.25874619  LEAF 
3  GCIMB211_SHADE_ROOT  PC1 -0.28965387  ROOT 
4 GCIMB211_SHADE_SEEDLING  PC1 0.21416352 SEEDLING 
5 GCIMB211_SHADE_SILIQUE  PC1 0.15468874 SILIQUE 
6 GCIMB211_SUN_INTERNODE  PC1 -0.16332945 INTERNODE 
7   GCIMB211_SUN_LEAF  PC1 0.22555539  LEAF 
8   GCIMB211_SUN_ROOT  PC1 -0.24209723  ROOT 
9  GCIMB211_SUN_SEEDLING  PC1 0.25053364 SEEDLING 
10  GCIMB211_SUN_SILIQUE  PC1 0.25269207 SILIQUE 
11 GCR500_SHADE_INTERNODE  PC1 -0.11863509 INTERNODE 
12  GCR500_SHADE_LEAF  PC1 0.28048136  LEAF 
13  GCR500_SHADE_ROOT  PC1 -0.31486321  ROOT 
14 GCR500_SHADE_SEEDLING  PC1 0.04919059 SEEDLING 
15  GCR500_SHADE_SILIQUE  PC1 0.06055899 SILIQUE 
16  GCR500_SUN_INTERNODE  PC1 -0.16754805 INTERNODE 
17   GCR500_SUN_LEAF  PC1 0.29588830  LEAF 
18   GCR500_SUN_ROOT  PC1 -0.30497481  ROOT 
19  GCR500_SUN_SEEDLING  PC1 0.19962128 SEEDLING 
20  GCR500_SUN_SILIQUE  PC1 0.09154038 SILIQUE 

,因为我不知道这是如何使用应用做了,我只是做这个..

INT <- te_1_melt[grep("INTERNODE", te_1_melt$tis),] 
mean(INT[,3]) 

LEA <- te_1_melt[grep("LEA", te_1_melt$tis),] 
mean(LEA[,3]) 

ROOT <- te_1_melt[grep("ROOT", te_1_melt$tis),] 
mean(ROOT[,3]) 

SEED <- te_1_melt[grep("SEEDLING", te_1_melt$tis),] 
mean(SEED[,3]) 

SIL <- te_1_melt[grep("SILIQUE", te_1_melt$tis),] 
mean(SIL[,3]) 

comb <- cbind(mean(INT[,3]), mean(LEA[,3]), mean(ROOT[,3]), mean(SEED[,3]), mean(SIL[,3])) 
colnames(comb) <- c("INTERNODE", "LEAF", "ROOT", "SEEDLING", "SILIQUE") 
comb 
comb_mlet <- melt(comb) 
comb_mlet 

即使我得到了我想要的(见下文),我知道这不是有效的,只是想了解如何使用apply来完成。有人帮忙吗?

> comb_mlet 
    Var1  Var2  value 
1 1 INTERNODE -0.1382027 
2 1  LEAF 0.2651678 
3 1  ROOT -0.2878973 
4 1 SEEDLING 0.1783773 
5 1 SILIQUE 0.1398700 

感谢 众*

在要使用tapply这种情况。

> tapply(te_1_melt$value, te_1_melt$tis, FUN=mean) 
INTERNODE  LEAF  ROOT SEEDLING SILIQUE 
-0.1382027 0.2651678 -0.2878973 0.1783773 0.1398700 

不能使用apply here.You应“按组”功能使用的那种。例如,使用plyr

> library(plyr) 
> ddply(dat,.(tis),summarise,mm=mean(value)) 
     tis   mm 
1 INTERNODE -0.1382027 
2  LEAF 0.2651678 
3  ROOT -0.2878973 
4 SEEDLING 0.1783773 
5 SILIQUE 0.1398700 
+0

谢谢。我不知道我可以使用“plyr”来做到这一点... – upendra

为什么不是aggregate

aggregate(value ~ tis, data=df, mean) 

#  tis  value 
#1 INTERNODE -0.1382027 
#2  LEAF 0.2651678 
#3  ROOT -0.2878973 
#4 SEEDLING 0.1783773 
#5 SILIQUE 0.1398700 
+0

很酷...今天我学到了更多新东西.. – upendra