- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望有人能帮助我解决以下事件检测问题。输入数据是一个时间序列(常规)。它包含“时间”、“水位”和“径流”。目的是检测高于阈值的事件并提取事件开始时间、结束时间、持续时间(以分钟为单位)以及事件期间的最大值/总和值。作为定义,当日期发生变化时,必须剪切每个事件。相反,如果缺失值的持续时间超过一个小时,NA 只会导致事件中断。
library(data.table)
library(dplyr)
library(xts)
## data
dWL <- structure(list(Time = structure(c(1463951500, 1463951800, 1463952100, 1463952400, 1463952700, 1463953000, 1463953300, 1463953600, 1463953900, 1463954200, 1463954500, 1463954800, 1463955100, 1463955400, 1463955700, 1463956000),class = c("POSIXct", "POSIXt"), tzone = ""), WL = c(0.2, 2.5, 2.4, 2.1, 0.9, 2.8, 2.9, 1.9, 2.4, NA, 2.3, 2.6, 2.8, 2.1, 2.0, 1.9), Q = c(0.0, 255.5, 232.4, 150.1, 0.0, 345.8, 382.9, 0.0, 214.4, NA, 201.3, 312.6, 362.8, 80.1, 20.0, 0.0)), row.names = c(NA, -16L), class = "data.frame")
## threshold value
vth <-2
na.omit(dWL) %>% ## ??how to drop NAs only when the NA-duration is longer than an hour??
mutate(tmp_WL = WL >= vth, id = rleid(tmp_WL)) %>%
filter(tmp_WL) %>%
group_by(id) %>% ## ??how to additional seperate events during change-of-date??
summarise(start_time=first(Time),end_time=last(Time), event_duration = difftime(last(Time), first(Time)), max_Q=max(Q), sum_Q=sum(Q))
我知道 heatwaveR
包具有非常有用的 exceedance
功能,尽管我还没有设法让它在次日时间序列中工作。
最佳答案
因为您用 data.table
标记了它,所以让我们使用它。我们可以利用带有 rleid()
的运行长度编码来跟踪事件。一旦我们为每个人都有一个 ID,我们就可以进行简单的分组并进行计算。最后,我们通过将 RLE
列设置为 NULL
来删除它,然后使用 []
查看结果。
library(data.table)
setDT(dWL)[!is.na(WL),event := WL > vth][
,RLE := rleidv(event)][
event == TRUE,.(start = min(Time),
end=max(Time),
max.WL=max(WL),
duration=difftime(max(Time),min(Time)),
runoff=sum(Q)),
by=RLE][,RLE:=NULL][]
# start end max.WL duration runoff
#1: 2016-05-22 17:16:40 2016-05-22 17:26:40 2.5 10 mins 638.0
#2: 2016-05-22 17:36:40 2016-05-22 17:41:40 2.9 5 mins 728.7
#3: 2016-05-22 17:51:40 2016-05-22 17:51:40 2.4 0 mins 214.4
#4: 2016-05-22 18:01:40 2016-05-22 18:16:40 2.8 15 mins 956.8
数据
dWL <- structure(list(Time = structure(c(1463951500, 1463951800, 1463952100, 1463952400, 1463952700, 1463953000, 1463953300, 1463953600, 1463953900, 1463954200, 1463954500, 1463954800, 1463955100, 1463955400, 1463955700, 1463956000),class = c("POSIXct", "POSIXt"), tzone = ""), WL = c(0.2, 2.5, 2.4, 2.1, 0.9, 2.8, 2.9, 1.9, 2.4, NA, 2.3, 2.6, 2.8, 2.1, 2.0, 1.9), Q = c(0.0, 255.5, 232.4, 150.1, 0.0, 345.8, 382.9, 0.0, 214.4, NA, 201.3, 312.6, 362.8, 80.1, 20.0, 0.0)), row.names = c(NA, -16L), class = "data.frame")
vth <- 2
关于r - timeseries 和 dplyr,事件检测(datechange 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61060374/
我想使用现有 TimeSerie 的索引和另一个具有不同时间索引的 TimeSerie 的值来创建 DataFrame 或 TimeSerie。时间序列看起来像; DT 2018-01-02
我正在尝试使用 Google 监控 REST API(代码示例)获取性能数据。但它返回空数据“{}”。还观察到它正在重新调整响应的 ContentEncoding 为“gzip”类型。 private
我想从某个小时开始以每天(正好 24 小时)的频率重新采样 TimeSeries。 喜欢: index = date_range(datetime(2012,1,1,17), freq='H', pe
我目前正在使用 Azure 时序见解来聚合我的数据。它为我提供了一种生成日期直方图的方法,我可以在其中指定搜索跨度和存储桶大小。然而,buckets的结果并不符合我的预期。 例如,如果搜索范围是从 2
我目前正在尝试为股票价格烛台做一个简单的实现。假设我们有一只名为 XYZ 的股票。该股票收到一系列价格(没有特定频率),(例如)看起来像:XYZ: [10.2, 10.7, 12, 11 ....]。
我有这个jsfiddle:http://jsfiddle.net/Ra2xS/42/ 。我完全不知道哪里出了问题。谁能看一下代码并提出更正建议吗? var dim = {"width":590,"he
如何找到时间序列中最大的序列。例如,我有一个像这样的 DataFrame: index Value 1-1-2012 10 1-2-2012 14 1-3-2012 15 1-4
这是我的代码: function myFunction() { // do stuff } async.timesSeries(100, myFunction); doSomethingE
我已经在谷歌上搜索了一段时间,但没有找到合适的解决方案。我有一个包含几百万行的时间序列,其结构相当奇怪: VisitorID Time VisitDuration 1
作为 AchartEngine API 的 TimeSeries Construstor,只接受字符串作为参数,没有其他参数作为比例参数传递。那么我将如何在两种不同的比例下使用它 谢谢 最佳答案 我想
TimeSerial 函数 返回一个 Date 子类型的 Variant,含有指定时、分、秒的时间。 TimeSerial(hour,minute, second) 参数 hour 其值为
我正在绘制一个金融时间序列(见下文,这里有 1 个月的数据) 我想删除我用红叉等显示的时间段,即星期六。请注意,这些时间段并非所有没有数据的时间段,而只是星期六。 我知道有一些如何消除间隙的例子,例如
我有几年的数据,例如(作为 pandas TimeSeries): 1997-04-02 0.0 1997-04-03 0.0 1997-04-04 2.0 1997-04-0
我有一个 TimeSeries 图表,显示每个日期的一些值,并且有两个系列显示为两条不同的行。 问题是有时一个系列不包含某些特定日期的值。在这种情况下,我假设该行将从本系列的上一点延续到下一点。 不幸
我正在努力思考 Redis 的时间序列规则创建是如何工作的,我很困惑为什么 Redis 会忽略聚合中的最后一项,并且想知道这是否是预期的行为。 我在 redis-cli 中创建了一个示例代码来说明:
使用 Charts package是否可以调整 TimeSeries 图表的笔划宽度? 查看文档/examples我看到折线图显示了一个 strokeWidthPxFn,但我没有在 timeSerie
目前,我的 TimeSeries 图表每 2 秒显示一个位置的温度。 现在,如果我想每 2 秒显示一次降雨指数和温度,我该如何实现? 这是我的代码: import testWeatherService
我必须绘制时间序列图表,其中数据以纳秒为单位。但是,在我当前的实现中,我们的日期轴范围以毫秒为单位。 那么如何将日期轴范围从毫秒更改为纳秒。 谢谢。 :) 最佳答案 这是我在your post上给出的
我从 JfreeChart 开始。我能够创建 OHLC 图表。我想在同一张图表上添加收盘价的平均值。我应该是一个 TimeSeries ?您知道如何混合图表吗? 谢谢 最佳答案 将第二个数据集添加到图
我有一个时间序列索引的 df,频率为 15 分钟,持续 10 年: dat 2004-04-07 00:00:00 4.0 2004-04-07
我是一名优秀的程序员,十分优秀!