Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算R中的平均风向?_R - Fatal编程技术网

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

如何计算R中的平均风向?,r,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) wdir这可

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

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)

wdir这可以使用
循环
包来完成

要获得
45
315
的平均值,可以使用:

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
mean(circular(wdir, units = "degrees"))
#Circular Data: 
#Type = angles 
#Units = degrees 
#Template = none 
#Modulo = asis 
#Zero = 0 
#Rotation = counter 
#[1] 41.05411
它不完全是
0
的原因是因为在
R

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

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
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

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

平均值(wdir)
?thothal,由于数据是递减的,因此不会给出所需的答案谢谢你的评论。我还有一个问题。这是一个每小时的数据,我想计算每天,6小时的序列等。。。不同时间间隔的平均值。我该怎么做?@LeeKi Seop可能会有帮助,或者你可以通过问另一个关于可复制数据的问题来获得帮助。这是一个很好的解决方案,但请注意,
mean(圆形(数据))
将计算出答案,即从零开始旋转,从正到180,从负到-180。您需要将360与负值相加,以获得0到360之间的答案。如果您只有风速和风向,但不知道u和v分量,您将如何进行此操作?