在 R 中查找向量中的斜率变化指数



我有一个包含两列的数据框:(1(日期时间和(2(流值。我想创建一个带有指标值的第三列来查找突然增加(通常是 0,但当流量显示大幅增加时为 1(。

datetime <-  as.POSIXct(c(1557439200, 1557440100, 1557441000, 1557441900,1557442800, 
1557443700, 1557444600, 1557445500, 1557446400, 1557447300, 1557448200, 1557449100, 1557450000, 1557450900, 
1557451800, 1557452700, 1557453600, 1557454500, 1557455400, 1557456300, 1557457200, 1557458100, 1557459000), origin = "1970-01-01")enter code here
streamflow <-  c(0.35, 0.35, 0.36,  0.54, 1.0, 2.7, 8.4, 9.3, 6.2, 3.8, 4.7, 
2.91, 2.01, 1.65, 1.41, 1.12, 0.95, 0.62, 0.52, 0.53, 0.53, 0.44, 0.35) 
data <- data.table(as.POSIXct(datetime), as.numeric(streamflow))

我正在尝试创建一个函数来识别它从 0.5 跳到 1 的日期时间,因为那是事件开始时。然后,当流低于某个阈值时,它将停止指示它是一个事件。

我目前的想法是一个函数,它将流流中两个连续点之间的局部斜率与某个窗口内所有流值的斜率进行比较,但我真的不知道怎么写。或者,也许有一个更好的主意来做我想做的事情

data = data[, delta := (V2-lag(V2))/lag(V2)][
, ind_jump := delta > 0.5
]
indices <- data[ind_jump==TRUE, V1]

与此无关,但出于某种奇怪的原因,R 给出了

(0.54 - 0.36)/0.36 > 0.5
[1] TRUE

0.18/0.36 > 0.5
[1] FALSE

最新更新