如何在R中按组同时计算均值、cv和标准差
我想同时计算多个变量的平均值、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
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是的,情况会更糟。。。