我想知道是否可以使用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
是一个很好的包,还是我应该使用替代方法?
答案 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)))
)以提高可读性......