Search code examples
rstandardsmeandeviation

mean and standard deviation by group for multiple variables


I am sure this question has been answered before, but I would like to caclulate mean and sd by treatment for multiple variables (100s) all at once and cannot figure out how to do it aside from using a long winded ddply code.

This is a portion of my dataframe (g):

   trt blk til res sand silt clay ibd1_6 ibd9_14 ibd_ave
1  CTK   1  CT   K   74   15   11  1.323   1.593   1.458
2  CTK   2  CT   K   71   15   14  1.575   1.601   1.588
3  CTK   3  CT   K   72   14   14  1.551   1.594   1.573
4  CTR   1  CT   R   72   15   13  1.560   1.647   1.604
5  CTR   2  CT   R   73   14   13  1.612   1.580   1.596
6  CTR   3  CT   R   73   13   14  1.709   1.577   1.643
7  ZTK   1  ZT   K   72   16   12  1.526   1.546   1.536
8  ZTK   2  ZT   K   71   16   13  1.292   1.626   1.459
9  ZTK   3  ZT   K   71   17   12  1.623   1.607   1.615
10 ZTR   1  ZT   R   66   16   18  1.719   1.709   1.714
11 ZTR   2  ZT   R   67   17   16  1.529   1.708   1.618
12 ZTR   3  ZT   R   66   17   17  1.663   1.655   1.659 

I would like to have a function that does what ddply does, i.e ddply(g, trt, meanSand=mean(sand), sdSand=sd(sand), meanSilt=mean(silt). . . .) without having to write it all out. Any ideas? Thank you for your patience!


Solution

  • The function you will likely want to apply to your dataframe is aggregate() with either mean or sd as the function parameter.