r - 在设定的端点之间对时间序列的一部分求和
问题描述
我有一个雨量计数据的时间序列(xts),我希望能够从列表中汇总开始时间点和结束时间点之间的所有雨量。然后制作一个新的数据框,即 StormNumber 和 TotalRain 在那个时间
> head(RainGage)
Rain_mm
2019-07-01 00:00:00 0
2019-07-01 00:15:00 0
2019-07-01 00:30:00 0
2019-07-01 00:45:00 0
2019-07-01 01:00:00 0
2019-07-01 01:15:00 0
head(StormTimes)
StormNumber RainStartTime RainEndTime
1 1 2019-07-21 20:00:00 2019-07-22 04:45:00
2 2 2019-07-22 11:30:00 2019-07-22 23:45:00
3 3 2019-07-11 09:15:00 2019-07-11 19:00:00
4 4 2019-05-29 17:00:00 2019-05-29 20:45:00
5 5 2019-06-27 14:30:00 2019-06-27 17:15:00
6 6 2019-07-11 06:15:00 2019-07-11 09:00:00
当我过去尝试做类似的事情时,我有从 SO 社区获得的这段代码(但提取数据而不是求和)。但是,我不知道它是如何工作的,所以我正在努力使其适应这种情况。
do.call(rbind, Map(function(x, y) RainGage[paste(x, y, sep="/")],
StormTimes$RainStartTime, StormTimes$RainEndTime)
解决方案
在这种情况下,我建议只编写自己的函数,然后使用它apply
来实现你想要的,例如:
dates <- c('2019-07-01 00:00:00', '2019-07-01 00:15:00',
'2019-07-01 00:30:00', '2019-07-01 00:45:00',
'2019-07-01 01:00:00', '2019-07-01 01:15:00')
dates <- as.POSIXct(strptime(dates, '%Y-%m-%d %H:%M:%S'))
mm <- c(0, 10, 10, 20, 0, 0)
rain <- data.frame(dates, mm)
number <- c(1,2)
start <- c('2019-07-01 00:00:00','2019-07-01 00:18:00')
start <- as.POSIXct(strptime(start, '%Y-%m-%d %H:%M:%S'))
end <- c('2019-07-01 00:17:00','2019-07-01 01:20:00')
end <- as.POSIXct(strptime(end, '%Y-%m-%d %H:%M:%S'))
storms <- data.frame(number, start, end)
# Sum of rain
f = function(x, output) {
# Get storm number
number = x[1]
# Get starting moment
start = x[2]
# Get ending moment
end = x[3]
# Calculate sum
output <- sum(rain[rain$dates >= start & rain$dates < end, 'mm'])
}
# Apply function to each row of the dataframe
storms$rain <- apply(storms, 1, f)
print(storms)
这产生:
number start end rain
1 1 2019-07-01 00:00:00 2019-07-01 00:17:00 10
2 2 2019-07-01 00:18:00 2019-07-01 01:20:00 30
rain
因此,现在的一列storms
包含 的总和rain$mm
,这就是您所追求的。
希望对您有所帮助!
推荐阅读
- dart - Flutter:对文本执行命中测试
- r - 带有 MultiSubNetFailover 的 ODBC 连接字符串
- c# - 将多个 Web 服务发布到同一个 Azure VM
- javascript - 为什么 array.includes 比 JavaScript 中的 set.has 快一个数量级?
- subscription - Service Bus Explorer中订阅主题的第三个数字是多少
- xcode - iOS UI 测试目标缺少权利 icloud-services
- bash - 错误后带有可选和非可选命令的 bash 陷阱
- r - 加载 .rda 文件并遍历其对象
- elasticsearch - 使用 Nlog 进行 Elasticsearch 配置
- wordpress - htaccess 给出 403 除了自己的 ip-address