我如何找到数据集中超过6个值的最大增量

问题描述 投票:1回答:2

我有一组核心温度值的数据。我每隔10秒钟就会收集几个小时的温度值。我尝试在6个温度值内找到最高的温度升高(Tslope)。我尝试了滚动平均的方法,但我什至没有找到解决方案。数据集如下所示:

R001 <- R001_G2_Q3_T

Test Subject      Datum                Zeit Temperatur Timepoint
1     G2    R001 2018-10-27 1899-12-31 16:51:45       38.4        Q3
2     G2    R001 2018-10-27 1899-12-31 16:51:55       38.4        Q3
3     G2    R001 2018-10-27 1899-12-31 16:52:05       38.4        Q3
4     G2    R001 2018-10-27 1899-12-31 16:52:15       38.4        Q3
5     G2    R001 2018-10-27 1899-12-31 16:52:25       38.4        Q3
6     G2    R001 2018-10-27 1899-12-31 16:52:35       38.3        Q3
7     G2    R001 2018-10-27 1899-12-31 16:52:45       38.4        Q3
8     G2    R001 2018-10-27 1899-12-31 16:52:55       38.5        Q3
9     G2    R001 2018-10-27 1899-12-31 16:53:06       38.3        Q3
10    G2    R001 2018-10-27 1899-12-31 16:53:16       38.4        Q3
11    G2    R001 2018-10-27 1899-12-31 16:53:26       38.4        Q3
12    G2    R001 2018-10-27 1899-12-31 16:53:36       38.4        Q3
13    G2    R001 2018-10-27 1899-12-31 16:53:46       38.4        Q3
14    G2    R001 2018-10-27 1899-12-31 16:53:56       38.4        Q3
15    G2    R001 2018-10-27 1899-12-31 16:54:06       38.3        Q3
16    G2    R001 2018-10-27 1899-12-31 16:54:16       38.3        Q3
17    G2    R001 2018-10-27 1899-12-31 16:54:26       38.3        Q3
18    G2    R001 2018-10-27 1899-12-31 16:54:36       38.4        Q3
19    G2    R001 2018-10-27 1899-12-31 16:54:47       38.4        Q3
20    G2    R001 2018-10-27 1899-12-31 16:54:57       38.3        Q3
21    G2    R001 2018-10-27 1899-12-31 16:55:07       38.4        Q3
22    G2    R001 2018-10-27 1899-12-31 16:55:17       38.4        Q3
23    G2    R001 2018-10-27 1899-12-31 16:55:27       38.4        Q3
24    G2    R001 2018-10-27 1899-12-31 16:55:37       38.4        Q3
25    G2    R001 2018-10-27 1899-12-31 16:55:47       38.5        Q3
26    G2    R001 2018-10-27 1899-12-31 16:55:57       38.4        Q3
27    G2    R001 2018-10-27 1899-12-31 16:56:07       38.4        Q3
28    G2    R001 2018-10-27 1899-12-31 16:56:17       38.4        Q3
29    G2    R001 2018-10-27 1899-12-31 16:56:28       38.5        Q3
30    G2    R001 2018-10-27 1899-12-31 16:56:38       38.4        Q3
31    G2    R001 2018-10-27 1899-12-31 16:56:48       38.4        Q3
32    G2    R001 2018-10-27 1899-12-31 16:56:58       38.5        Q3
33    G2    R001 2018-10-27 1899-12-31 16:57:08       38.5        Q3
[...]

例如,我可以说:“ 16:55和16:56之间的温度为0.3°C,最高核心温度升高了”

当我另外给您看一张图片时,也许更容易理解我的问题:enter image description here

我想找到的是Tslope:Tslope将在一分钟内迭代计算,包括6次连续测量时间点。当然,我的数据集包含更多的值,因此会有类似图像中的曲线。

在这种情况下,如果有人可以帮助我,那将是很棒的。感谢您的帮助。

r moving-average highest
2个回答
0
投票

这里是您要使用data.table的问题。

样本数据

library( data.table )

DT <- fread("ID Test Subject      Datum                Zeit Temperatur Timepoint
1     G2    R001 2018-10-27 '1899-12-31 16:51:45'       38.4        Q3
2     G2    R001 2018-10-27 '1899-12-31 16:51:55'       38.4        Q3
3     G2    R001 2018-10-27 '1899-12-31 16:52:05'       38.4        Q3
4     G2    R001 2018-10-27 '1899-12-31 16:52:15'       38.4        Q3
5     G2    R001 2018-10-27 '1899-12-31 16:52:25'       38.4        Q3
6     G2    R001 2018-10-27 '1899-12-31 16:52:35'       38.3        Q3
7     G2    R001 2018-10-27 '1899-12-31 16:52:45'       38.4        Q3
8     G2    R001 2018-10-27 '1899-12-31 16:52:55'       38.5        Q3
9     G2    R001 2018-10-27 '1899-12-31 16:53:06'       38.3        Q3
10    G2    R001 2018-10-27 '1899-12-31 16:53:16'       38.4        Q3
11    G2    R001 2018-10-27 '1899-12-31 16:53:26'       38.4        Q3
12    G2    R001 2018-10-27 '1899-12-31 16:53:36'       38.4        Q3
13    G2    R001 2018-10-27 '1899-12-31 16:53:46'       38.4        Q3
14    G2    R001 2018-10-27 '1899-12-31 16:53:56'       38.4        Q3
15    G2    R001 2018-10-27 '1899-12-31 16:54:06'       38.3        Q3
16    G2    R001 2018-10-27 '1899-12-31 16:54:16'       38.3        Q3
17    G2    R001 2018-10-27 '1899-12-31 16:54:26'       38.3        Q3
18    G2    R001 2018-10-27 '1899-12-31 16:54:36'       38.4        Q3
19    G2    R001 2018-10-27 '1899-12-31 16:54:47'       38.4        Q3
20    G2    R001 2018-10-27 '1899-12-31 16:54:57'       38.3        Q3
21    G2    R001 2018-10-27 '1899-12-31 16:55:07'       38.4        Q3
22    G2    R001 2018-10-27 '1899-12-31 16:55:17'       38.4        Q3
23    G2    R001 2018-10-27 '1899-12-31 16:55:27'       38.4        Q3
24    G2    R001 2018-10-27 '1899-12-31 16:55:37'       38.4        Q3
25    G2    R001 2018-10-27 '1899-12-31 16:55:47'       38.5        Q3
26    G2    R001 2018-10-27 '1899-12-31 16:55:57'       38.4        Q3
27    G2    R001 2018-10-27 '1899-12-31 16:56:07'       38.4        Q3
28    G2    R001 2018-10-27 '1899-12-31 16:56:17'       38.4        Q3
29    G2    R001 2018-10-27 '1899-12-31 16:56:28'       38.5        Q3
30    G2    R001 2018-10-27 '1899-12-31 16:56:38'       38.4        Q3
31    G2    R001 2018-10-27 '1899-12-31 16:56:48'       38.4        Q3
32    G2    R001 2018-10-27 '1899-12-31 16:56:58'       38.5        Q3
33    G2    R001 2018-10-27 '1899-12-31 16:57:08'       38.5        Q3", quote = "'")

code

#extract time from Zeit
DT[, Zeit := gsub(".* (.*$)", "\\1", Zeit)]
#create posixct timestamp
DT[, timestamp := as.POSIXct( paste0( Datum, "T", Zeit ), format = "%Y-%m-%dT%H:%M:%S", tz = "GMT" ) ]
#create a minute-colum to summarise on
DT[, time_summ := format( timestamp, "%Y-%m-%dT%H:%M" ) ]
#calculate delta
DT[, deltaT := Temperatur - shift( Temperatur, type = "lag" )]
#summarise, het the maximum deltaT by minute
DT[, .(max_deltaT = max( deltaT, na.rm = TRUE ) ), by = .(period = time_summ ) ]

输出

#              period max_deltaT
# 1: 2018-10-27T16:51        0.0
# 2: 2018-10-27T16:52        0.1
# 3: 2018-10-27T16:53        0.1
# 4: 2018-10-27T16:54        0.1
# 5: 2018-10-27T16:55        0.1
# 6: 2018-10-27T16:56        0.1
# 7: 2018-10-27T16:57        0.0

0
投票

我猜这是您想要的:

DT[, maxTslope_last6 := frollapply(Temperatur, n = 6, function(x) max(diff(x)))]

> DT
    ID Test Subject      Datum                Zeit Temperatur Timepoint maxTslope_last6
 1:  1   G2    R001 2018-10-27 1899-12-31 16:51:45       38.4        Q3              NA
 2:  2   G2    R001 2018-10-27 1899-12-31 16:51:55       38.4        Q3              NA
 3:  3   G2    R001 2018-10-27 1899-12-31 16:52:05       38.4        Q3              NA
 4:  4   G2    R001 2018-10-27 1899-12-31 16:52:15       38.4        Q3              NA
 5:  5   G2    R001 2018-10-27 1899-12-31 16:52:25       38.4        Q3              NA
 6:  6   G2    R001 2018-10-27 1899-12-31 16:52:35       38.3        Q3             0.0
 7:  7   G2    R001 2018-10-27 1899-12-31 16:52:45       38.4        Q3             0.1
 8:  8   G2    R001 2018-10-27 1899-12-31 16:52:55       38.5        Q3             0.1
 9:  9   G2    R001 2018-10-27 1899-12-31 16:53:06       38.3        Q3             0.1
10: 10   G2    R001 2018-10-27 1899-12-31 16:53:16       38.4        Q3             0.1
11: 11   G2    R001 2018-10-27 1899-12-31 16:53:26       38.4        Q3             0.1
12: 12   G2    R001 2018-10-27 1899-12-31 16:53:36       38.4        Q3             0.1
13: 13   G2    R001 2018-10-27 1899-12-31 16:53:46       38.4        Q3             0.1
14: 14   G2    R001 2018-10-27 1899-12-31 16:53:56       38.4        Q3             0.1
15: 15   G2    R001 2018-10-27 1899-12-31 16:54:06       38.3        Q3             0.0
16: 16   G2    R001 2018-10-27 1899-12-31 16:54:16       38.3        Q3             0.0
17: 17   G2    R001 2018-10-27 1899-12-31 16:54:26       38.3        Q3             0.0
18: 18   G2    R001 2018-10-27 1899-12-31 16:54:36       38.4        Q3             0.1
19: 19   G2    R001 2018-10-27 1899-12-31 16:54:47       38.4        Q3             0.1
20: 20   G2    R001 2018-10-27 1899-12-31 16:54:57       38.3        Q3             0.1
21: 21   G2    R001 2018-10-27 1899-12-31 16:55:07       38.4        Q3             0.1
22: 22   G2    R001 2018-10-27 1899-12-31 16:55:17       38.4        Q3             0.1
23: 23   G2    R001 2018-10-27 1899-12-31 16:55:27       38.4        Q3             0.1
24: 24   G2    R001 2018-10-27 1899-12-31 16:55:37       38.4        Q3             0.1
25: 25   G2    R001 2018-10-27 1899-12-31 16:55:47       38.5        Q3             0.1
26: 26   G2    R001 2018-10-27 1899-12-31 16:55:57       38.4        Q3             0.1
27: 27   G2    R001 2018-10-27 1899-12-31 16:56:07       38.4        Q3             0.1
28: 28   G2    R001 2018-10-27 1899-12-31 16:56:17       38.4        Q3             0.1
29: 29   G2    R001 2018-10-27 1899-12-31 16:56:28       38.5        Q3             0.1
30: 30   G2    R001 2018-10-27 1899-12-31 16:56:38       38.4        Q3             0.1
31: 31   G2    R001 2018-10-27 1899-12-31 16:56:48       38.4        Q3             0.1
32: 32   G2    R001 2018-10-27 1899-12-31 16:56:58       38.5        Q3             0.1
33: 33   G2    R001 2018-10-27 1899-12-31 16:57:08       38.5        Q3             0.1
    ID Test Subject      Datum                Zeit Temperatur Timepoint maxTslope_last6
© www.soinside.com 2019 - 2024. All rights reserved.