You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中计算特定日期行的风向(WD)均值

计算指定日期的逐时风向(WD)均值

核心思路

先筛选出目标日期的所有逐时风向数据,再计算均值。如果需要批量处理所有日期的均值,可以按年、月、日分组计算。另外要注意:风向是圆周数据(0-360度),直接用算术均值可能出现逻辑错误(比如10°和350°的算术均值是180°,但实际合理均值是0°),下面会分别给出普通算术均值和更准确的圆周均值的实现代码。


Python(Pandas)实现

假设你的数据已经存入Pandas DataFrame df中:

1. 计算指定日期的算术均值

# 筛选1996年8月2日的所有记录
target_data = df[(df['Year'] == 1996) & (df['Month'] == 8) & (df['Day'] == 2)]
# 计算WD的算术均值
wd_mean = target_data['WD'].mean()
print("指定日期的WD算术均值:", wd_mean)

2. 批量计算所有日期的算术均值并查询指定日期

# 按年、月、日分组,计算每日WD算术均值
daily_wd_mean = df.groupby(['Year', 'Month', 'Day'])['WD'].mean().reset_index()
# 查询1996年8月2日的结果
target_daily_mean = daily_wd_mean[(daily_wd_mean['Year'] == 1996) & 
                                 (daily_wd_mean['Month'] == 8) & 
                                 (daily_wd_mean['Day'] == 2)]
print(target_daily_mean)

3. 更准确的圆周均值计算

import numpy as np

# 筛选目标日期数据
target_data = df[(df['Year'] == 1996) & (df['Month'] == 8) & (df['Day'] == 2)]

# 将角度转换为弧度,计算正弦、余弦的均值
radians = np.deg2rad(target_data['WD'])
sin_mean = np.mean(np.sin(radians))
cos_mean = np.mean(np.cos(radians))

# 转换回角度并调整到0-360°范围
wd_circular_mean = np.rad2deg(np.arctan2(sin_mean, cos_mean))
wd_circular_mean = wd_circular_mean if wd_circular_mean >= 0 else wd_circular_mean + 360

print("指定日期的WD圆周均值:", wd_circular_mean)

R语言实现

假设你的数据存入数据框 df中:

1. 计算指定日期的算术均值

library(dplyr)

# 筛选数据并计算均值
wd_mean <- df %>%
  filter(Year == 1996, Month == 8, Day == 2) %>%
  pull(WD) %>%
  mean(na.rm = TRUE)

cat("指定日期的WD算术均值:", wd_mean, "\n")

2. 批量计算所有日期的算术均值并查询指定日期

# 分组计算每日均值
daily_wd_mean <- df %>%
  group_by(Year, Month, Day) %>%
  summarise(WD_mean = mean(WD, na.rm = TRUE)) %>%
  ungroup()

# 查询目标日期结果
target_daily_mean <- filter(daily_wd_mean, Year == 1996, Month == 8, Day == 2)
print(target_daily_mean)

3. 更准确的圆周均值计算

library(dplyr)
library(circular)

# 提取目标日期的风向数据并转换为circular对象
target_wd <- df %>%
  filter(Year == 1996, Month == 8, Day == 2) %>%
  pull(WD) %>%
  circular(type = "angles", units = "degrees", template = "geographic")

# 计算圆周均值
wd_circular_mean <- mean(target_wd)
cat("指定日期的WD圆周均值:", wd_circular_mean, "\n")

内容的提问来源于stack exchange,提问作者tsheriff0011

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:23:17