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

基于分钟降水数据计算"降雨时长(小时)"技术求助

解决分钟级降水数据统计小时内降水时长的问题

看起来你是想把分钟级的降水数据按小时汇总,统计每个小时里有多少分钟是有降水(precipitation > 0)的,再转换成小时单位对吧?我给你两个常用的R语言实现方案,你可以根据自己的习惯选择:


方法一:用dplyr + lubridate(推荐,代码更清晰)

首先确保你安装了这两个包,如果没装先运行:

install.packages(c("dplyr", "lubridate"))

然后处理数据:

library(dplyr)
library(lubridate)

# 先把date列转成标准的日期时间格式(如果还不是的话)
metsacbo$date <- ymd_hms(metsacbo$date)

# 按小时分组,统计降水分钟数并转成小时
hourly_precip_duration <- metsacbo %>%
  # 提取小时级的时间作为分组依据,比如"2017-06-06 17:00:00"
  mutate(hourly_time = floor_date(date, unit = "hour")) %>%
  group_by(hourly_time) %>%
  summarise(
    # 统计precipitation>0的行数(也就是分钟数),除以60转成小时
    precip_hours = sum(precipitation > 0) / 60
  )

# 查看结果
head(hourly_precip_duration)

方法二:用Base R实现

如果不想加载额外包,用基础R也能搞定:

# 转日期时间格式
metsacbo$date <- as.POSIXct(metsacbo$date, format = "%Y-%m-%d %H:%M:%S")

# 提取小时分组,把时间截断到小时级别
metsacbo$hour_group <- format(metsacbo$date, "%Y-%m-%d %H:00:00")

# 按小时分组统计
hourly_precip_duration <- aggregate(
  precipitation ~ hour_group,
  data = metsacbo,
  FUN = function(x) sum(x > 0) / 60
)

# 重命名结果列更直观
colnames(hourly_precip_duration)[2] <- "precip_hours"

简单解释下:两种方法都是先把分钟级数据按小时分组,然后统计每组里precipitation > 0的记录数(也就是有降水的分钟数),最后除以60转换成小时单位。这样得到的precip_hours就是你要的每小时降水时长啦。

如果你的数据里有缺失值,记得先处理下(比如用na.omit()或者在sum里加na.rm=TRUE),避免结果出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:23