【问题标题】:How to compute mean, cv and standard deviation simultaneously using by group in R如何在 R 中按组同时计算均值、cv 和标准差
【发布时间】:2022-03-23 14:00:53
【问题描述】:

我想同时计算超过 1 个变量的均值、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 

欢迎提出任何建议

【问题讨论】:

  • 你可以试试dplyr,即library(dplyr); df1 %>% group_by(CLT, SOURCE) %>% summarise_each(funs(mean, sd))
  • 在基础 R 中,aggregate 函数允许您使用一个或多个分组向量将相同的函数应用于多个列。
  • @BondedDust 是的,但对于大数据集来说也很慢。此外,结果列将是矩阵,可能需要通过do.call(data.frame, .. 转换为 data.frame(尽管不是必需的)。请在此处查看基准stackoverflow.com/questions/28909372/…
  • 感谢比较。 (这甚至不是一个大数据集,但我想如果使用 10e7 x 30 列,它可能会变得更糟。)
  • @BondedDust 是的,会更糟……

标签: r


【解决方案1】:

试试

cv <- function(x) 100*( sd(x)/mean(x))
library(dplyr)
df1 %>% 
     group_by(CLT, SOURCE) %>% 
     summarise_each(funs(mean, sd, cv))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2021-06-17
    • 2014-03-21
    • 2016-09-24
    • 2021-03-22
    相关资源
    最近更新 更多