使用带有复杂 FUN 参数的聚合

Using aggregate with a complex FUN argument

我对计算每小时平均值很感兴趣。过去我曾成功地使用聚合函数,如下所示:

Time<-c("1:00","1:20","1:40","2:00","2:20","2:40","3:00","3:20","3:40","4:00","4:20","4:40")
Hour<-c(1,1,1,2,2,2,3,3,3,4,4,4)
Bearing<-c(10,20,30,350,3,20,170,195,200,300,20,50)

DF<-data.frame(Time,Hour,Bearing)

ByHR<-aggregate(.~Hour,data=DF,mean)

通过这种方式,我得到了我的轴承数据的每小时平均值。但是现在我想使用 circ.mean() 函数来计算循环数据的均值。

library(CircStats)
deg(circ.mean(rad(DF$Bearing))) 

而且我不能在上面的聚合代码中插入上面的函数,因为我得到了一个错误。那么有没有办法对聚合使用更复杂的 FUN 参数?如果不是,在上述数据中按小时应用 circ.mean() 函数的最佳方法是什么?

您是否尝试编写自己的函数作为复杂函数的包装器?

my_fun <- function(x) deg(circ.mean(rad(x)))
aggregate(.~Hour, data=DF, my_fun) 

还有匿名函数方法:

aggregate(.~Hour, data=DF, function(x) deg(circ.mean(rad(x))) )