2015-12-01 7 views
2

У меня есть набор данных, которые состоят из вектора направления ветра, следующим образом:Как рассчитать среднее значение направления ветра в 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) 

скалярных значений в градусах.

Как рассчитать среднее направление ветра?

+4

Как насчет 'mean (wdir)'? – thothal

+0

[это может помочь] (http://stackoverflow.com/questions/491738/how-do-you-calculate-the-average-of-a-set-of-angles) – germcd

+2

@thothal, который не даст желаемый ответ, так как данные являются градусами – germcd

ответ

7

Это можно сделать, используя пакет circular.

Чтобы получить среднее 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 

Причина это не совсем 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 
+0

спасибо за ваш комментарий. У меня есть дополнительный вопрос. Это почасовые данные, и я хочу рассчитать каждый день, 6 часов и т. Д. ... различный промежуток времени. Как я могу это сделать? –

+1

@ LeeKi-Seop [this] (http://stackoverflow.com/questions/24745402/r-rolling-window-function-with-adjustable-window-and-step-size-for-irregularly) может помочь или вы можете получите помощь с этой проблемой, задав другой вопрос с воспроизводимыми данными. – germcd

0

Вы не можете просто усреднить направление ветра, вам нужно скорость для каждого направления и скорость, которую вы можете оценить средним, учитывая векторную форму. Другой способ - преобразовать скорость и направление ветра в компоненты u и v, чем вы можете усреднить u и v отдельно, а затем оценить скорость и направление. Ветер spd = sqrt (u^2 + v^2); ветер dir = atan2 (u, v) * (180/pi) +180

Смежные вопросы