如何计算R中的风向平均值?

时间:2015-12-01 09:45:06

标签: r

我有一个由风向矢量组成的数据集,如下所示:

wdir <- c(296.9, 215.2, 204.8, 110.8, 287.6, 203.4, 253.1, 46.0, 298.8,  62.8, 183.4, 62.3,
          44.3, 97.6, 78.6, 125.6, 116.9, 121.0, 111.2, 335.8, 287.4, 51.7, 232.6, 265.5,
          269.7, 20.5, 17.0, 310.8)

标量值以度为单位。

如何计算平均风向?

2 个答案:

答案 0 :(得分:9)

这可以使用circular包来完成。

要获得45315的平均值,您可以使用:

library(circular)
mean(circular(c(pi/4,7*pi/4)))
#Circular Data: 
#Type = angles 
#Units = radians 
#Template = none 
#Modulo = asis 
#Zero = 0 
#Rotation = counter 
#[1] -1.570092e-16

它不完全0的原因是因为R中的floating point precision

要获得wdir的平均值,您可以使用:

mean(circular(wdir, units = "degrees"))
#Circular Data: 
#Type = angles 
#Units = degrees 
#Template = none 
#Modulo = asis 
#Zero = 0 
#Rotation = counter 
#[1] 41.05411

另一个例子:

mean(circular(c(7*pi/2,pi/4, pi/2, 7*pi/2 )))
#Circular Data: 
#Type = angles 
#Units = radians 
#Template = none 
#Modulo = asis 
#Zero = 0 
#Rotation = counter 
#[1] -0.3926991

答案 1 :(得分:2)

您不能简单地平均风向,您需要每个方向的速度,并且您可以根据矢量形式评估平均速度。另一种方法是将风速和风向转换为u和v分量,而不是分别平均u和v,然后评估速度和方向。 Wind spd = sqrt(u ^ 2 + v ^ 2); wind dir = atan2(u,v)*(180 / pi)+180