【发布时间】: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