根据dplyr中的列值获取几何平均值/ SD

时间:2015-11-05 20:52:16

标签: r dplyr

我想知道是否可以使用dplyr根据另一列的值获取一组值的几何平均值,或者是否有更好的方法。

我有data.frame

这样的东西
Days.Stay | Svc
5         | Med
6         | Surg
...       | ...

我想获得一个列并将其称为Geo.Mean.Days.Stay或类似的内容,其中值的推导为Days.Stay的几何平均值,按Svc分组,因此每个{ {1}}将有自己独特的几何平均值 - 我想将其扩展到几何标准偏差。所以Svc结果如此:

data.frame

Days.Stay | Svc | Geo.Mean.Days.Stay | Geo.SD.Days.Stay 5 | Med | 6.78 | 2.7 6 | Surg| 5.4 | 2.1 是一个很好的包,还是我应该使用替代方法?

1 个答案:

答案 0 :(得分:2)

这应该有效:

library("dplyr")
dd %>% group_by(svc) %>%
    summarise(Geo.Mean.Days.Stay=exp(mean(log(Days.Stay))),
              Geo.SD.Days.Stay=exp(sd(log(Days.Stay))))

如果您要定期使用几何平均值和SD,最好定义一些辅助函数(gmean <- function(x) exp(mean(log(x))))以提高可读性......