У меня есть данные, где я получил локальные максимумы, обозначенные значением TRUE
в моем столбце loc_max
. Я хотел бы идентифицировать «истинные максимумы» из моих локальных максимумов, основываясь на следующих условиях: 1.) 5 значений, предшествующих локальным максимумам, должны иметь не менее 3 положительных первых производных; И 2.) последующие 5 значений должны иметь как минимум 3 отрицательные первые производные. Вот мой примерный фрейм данных:
val <- c(0.06796823, 0.12165540, 0.17685980, 0.28518490, 0.36616820,
0.40935790, 0.45418170, 0.48220730, 0.45214280, 0.40290130,
0.38103100, 0.39525690, 0.40527800, 0.48172680, 0.54250300,
0.56136270, 0.53755350, 0.57047540, 0.55738850, 0.50470080,
0.47487730, 0.45653140, 0.45670750, 0.43722310, 0.42154800,
0.41154490, 0.38138090, 0.41802160, 0.42043370, 0.39982040,
0.35258890, 0.32990900, 0.28508770, 0.23949280, 0.19405640,
0.16321880, 0.17098540, 0.17572110, 0.17464730, 0.17670690,
0.16105620, 0.18609890, 0.19083090, 0.19506300, 0.16865580,
0.15830920)
loc_max <- c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE)
df <- data.frame(val, loc_max)
Я должен был преобразовать новый столбец, содержащий логические значения, где мои идентифицированные "истинные максимумы" будут TRUE
, а остальные - FALSE
. Заранее спасибо за помощь.
Полученный кадр данных должен выглядеть следующим образом:
val loc_max true_max
1 0.06796823 FALSE FALSE
2 0.12165540 FALSE FALSE
3 0.17685980 FALSE FALSE
4 0.28518490 FALSE FALSE
5 0.36616820 FALSE FALSE
6 0.40935790 FALSE FALSE
7 0.45418170 FALSE FALSE
8 0.48220730 TRUE TRUE
9 0.45214280 FALSE FALSE
10 0.40290130 FALSE FALSE
11 0.38103100 FALSE FALSE
12 0.39525690 FALSE FALSE
13 0.40527800 FALSE FALSE
14 0.48172680 FALSE FALSE
15 0.54250300 FALSE FALSE
16 0.56136270 TRUE FALSE
17 0.53755350 FALSE FALSE
18 0.57047540 TRUE TRUE
19 0.55738850 FALSE FALSE
20 0.50470080 FALSE FALSE
21 0.47487730 FALSE FALSE
22 0.45653140 FALSE FALSE
23 0.45670750 TRUE FALSE
24 0.43722310 FALSE FALSE
25 0.42154800 FALSE FALSE
26 0.41154490 FALSE FALSE
27 0.38138090 FALSE FALSE
28 0.41802160 FALSE FALSE
29 0.42043370 TRUE FALSE
30 0.39982040 FALSE FALSE
31 0.35258890 FALSE FALSE
32 0.32990900 FALSE FALSE
33 0.28508770 FALSE FALSE
34 0.23949280 FALSE FALSE
35 0.19405640 FALSE FALSE
36 0.16321880 FALSE FALSE
37 0.17098540 FALSE FALSE
38 0.17572110 TRUE FALSE
39 0.17464730 FALSE FALSE
40 0.17670690 TRUE FALSE
41 0.16105620 FALSE FALSE
42 0.18609890 FALSE FALSE
43 0.19083090 FALSE FALSE
44 0.19506300 TRUE FALSE
45 0.16865580 FALSE FALSE
46 0.15830920 FALSE FALSE
Я включаю этот график для ясности: