如何标记从它之前或之后的数据点 >X 的数据点

How to mark data points that are >X from the data point before it or after it

我有一个 date/time 数据框,每 15 分钟就有一个值(有数百个数据点)。我想从它之前或之后的值中减去 > 或 < 1.5 的值。

这是我的数据框:

df = structure(list(Timestamp = 
                      structure(c(1622552400, 1622553300, 1622554200, 
                                  1622555100, 1622556000, 1622556900), 
                                class = c("POSIXct", "POSIXt"), tzone = "EST"), 
                    Temp = c(13.173, 13.269, 13.269, 13.269, 15.269, 13.269)), 
               row.names = c(NA, 6L), class = "data.frame")

我想我需要某种循环,但我真的不知道从哪里开始。

理想情况下,结果看起来像一个数据框,其中包含 date/time 列、值列和一个用 0 和 1 填充的新列(其中 0 表示值不是 > 或 < 1.5 并且1 表示该值为 < 或 > 1.5)。所以像这样的 table 在这里(它全为 0,因为 none 的值与它之前的值相比 > 或 < 1.5):

 Timestamp            Temp Difference_1.5
  <dttm>              <dbl>          <dbl>
1 2021-06-01 08:00:00  13.2              0
2 2021-06-01 08:15:00  13.3              0
3 2021-06-01 08:30:00  13.3              0
4 2021-06-01 08:45:00  13.3              0
5 2021-06-01 09:00:00  13.3              0
6 2021-06-01 09:15:00  13.3              0
> 

有什么想法吗?

您可以使用diff()计算所有连续元素之间的差异。

df$dif <- as.integer(c(FALSE, abs(diff(df$Temp)) > 1.5))
df
#             Timestamp   Temp dif
# 1 2021-06-01 08:00:00 13.173   0
# 2 2021-06-01 08:15:00 13.269   0
# 3 2021-06-01 08:30:00 13.269   0
# 4 2021-06-01 08:45:00 13.269   0
# 5 2021-06-01 09:00:00 15.269   1
# 6 2021-06-01 09:15:00 13.269   1