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

使用dplyr按日分组并基于条件计算气象数据均值

气象小时数据转日数据的条件分组处理

需求说明

将逐小时气象数据按Day字段分组生成日数据,规则如下:

  • 仅对满足HumH >50 | WetH>30条件的小时行,计算Temp和RH的均值
  • 若当日无任何满足条件的行,Temp_day和RH_day直接设为0

现有代码问题

当前使用dplyr的代码未实现上述条件逻辑,原代码如下:

weather_day <- weather_hour %>%
                  group_by(as.numeric(Day)) %>%
                  group_map(~head(.x,24L)) %>% 
                  summarize(Temp_day=mean(Temp),RH_day=mean(RH))

解决方案代码

library(dplyr)

weather_day <- weather_hour %>%
  # 按Day字段分组,确保每个组对应单日数据
  group_by(Day = as.numeric(Day)) %>%
  summarize(
    # 对满足条件的行计算Temp均值,无满足行时返回NaN
    Temp_day = mean(Temp[HumH > 50 | WetH > 30], na.rm = TRUE),
    # 对满足条件的行计算RH均值,无满足行时返回NaN
    RH_day = mean(RH[HumH > 50 | WetH > 30], na.rm = TRUE)
  ) %>%
  # 将NaN替换为0,对应当日无满足条件行的情况
  mutate(
    Temp_day = ifelse(is.na(Temp_day), 0, Temp_day),
    RH_day = ifelse(is.na(RH_day), 0, RH_day)
  )

逻辑说明

  1. 先按Day字段分组,保证每个分组对应一天的24小时数据
  2. 在summarize步骤中,通过索引筛选出满足HumH >50 | WetH>30的行,计算对应Temp和RH的均值,na.rm=TRUE用于忽略可能存在的NA值
  3. 若当日无满足条件的行,均值计算会返回NaN,最后通过mutate将这些NaN替换为0,符合需求规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:15:48