如何在R中按组同时计算均值、cv和标准差

如何在R中按组同时计算均值、cv和标准差,r,R,我想同时计算多个变量的平均值、cv和标准偏差,然后将输出分组(使用by语句)。下面是我的数据快照 CLT SOURCE LD BRX Bt02Sm86(Lg) GH801-2@ S7 1.5 8.6 Bt02Sm86(Lg) GH801-2@ S7 1.3 8.9 Bt02Sm86(Lg) GH801-2@ S7 1.8 8.7 Bt14Lg 26x36

我想同时计算多个变量的平均值、cv和标准偏差,然后将输出分组(使用
by
语句)。下面是我的数据快照

CLT             SOURCE          LD     BRX  

  Bt02Sm86(Lg)  GH801-2@ S7        1.5   8.6 
  Bt02Sm86(Lg)  GH801-2@ S7        1.3   8.9  
  Bt02Sm86(Lg)  GH801-2@ S7        1.8   8.7  
  Bt14Lg 26x36  GH811x810F1        1.4   9.6
  Bt14Lg 26x36  GH811x810F1        1.6  10.2   
  Bt03Sm86(Lg)  GH802-1@ S7        1.3   9.9
  Bt03Sm86(Lg)  GH802-1@ S7        1.2   8.9
  Bt03Sm86(Lg)  GH802-1@ S7        1.3   9.3   
  Bt18Lg 15x36  GH818x819F1        1.3   9.7 
  Bt18Lg 15x36  GH818x819F1        1.1   8.5 
  Bt18Lg 15x36  GH818x819F1        1.6   9.3   
  Bt19Lg 15x39  GH820x821F1        1.3   9.1
  Bt19Lg 15x39  GH820x821F1        1.5   9.3  
我希望我的输出如下所示

 CLT            SOURCE          mean_LD  cv_LD  std_LD  mean_BRX  cv_ld std_brx

Bt02Sm86(Lg)    GH801-2@ S7      xx.xx    xx.xx  xx.xx   xx.xx    xx.xx  xx.xx
Bt14Lg 26x36  GH811x810F1        xx.xx    xx.xx  xx.xx   xx.xx    xx.xx  xx.xx
Bt03Sm86(Lg)  GH802-1@ S7        xx.xx    xx.xx  xx.xx   xx.xx    xx.xx  xx.xx
Bt18Lg 15x36  GH818x819F1        xx.xx    xx.xx  xx.xx   xx.xx    xx.xx  xx.xx 
Bt19Lg 15x39  GH820x821F1        xx.xx    xx.xx  xx.xx   xx.xx    xx.xx  xx.xx 
欢迎提出任何建议

尝试

cv <- function(x) 100*( sd(x)/mean(x))
library(dplyr)
 df1 %>% 
     group_by(CLT, SOURCE) %>% 
     summarise_each(funs(mean, sd, cv))
cv%
分组依据(CLT,来源)%>%
总结每个(funs(平均值、sd、cv))

您可以尝试
dplyr
,即
库(dplyr);df1%>%group_by(CLT,SOURCE)%>%SUMMARE_(funs(平均值,sd))
在base R中,
AGGRATE
函数允许您使用一个或多个分组向量将同一函数应用于多个列。@BondedDust Yes,但对于大型数据集来说速度也很慢。此外,结果列将是矩阵,可能需要通过
do.call(data.frame,…
(虽然不是必需的)转换为data.frame。请检查这里的基准测试,感谢您的比较。(这甚至不是一个大数据集,但我想10e7乘30列可能会更糟。)@BondedDust是的,情况会更糟。。。