You need to enable JavaScript to run this app. R语言时序数据周期检测及dataframe按周期分组赋值实现
优惠活动
大模型
产品
解决方案
定价
更多

R语言时序数据周期检测及dataframe按周期分组赋值实现

R语言时序信号周期分组与参数计算

示例基础数据

构造简化版的示例时序数据,代码如下:

a <- data.frame(a = c(0,1,2,3,2,1,0,-1,-2,-3,-2,-1,
                        0,1,2,3,4,3,2,1,0,-1,-2,-3,-2,-1,
                        0,1,2,1,0,-1,-2,-3,-2,-1,0,1,2,3,2,1,
                        0,-1,-2,-3,-2,-1,0,1,2,3,2,1,
                        0,-1,-2,-3,-4,-3,-2,-1,0))
a$b <- seq(1,length(a$a),1)

现有检测方案的问题

尝试通过quantmod包的峰谷检测函数定位周期转折位置,代码如下:

library(quantmod)
max <- findPeaks(a$a)
min <- findValleys(a$a)

存在的偏差:该方法返回的位置索引是峰值、谷值点位的后一个坐标,无法直接用于计算周期内的振幅(span)和设定值(set)。原有配套计算代码因位置错位,无法匹配预期输出:

# 原有参数计算逻辑
span <- a[max-1,]$a - a[min-1,]$a
set <- a[max,]$a - span/2

自定义周期划分规则

按照业务逻辑定义的周期判定规则如下:

  • 基础边界逻辑:首个周期从数据第一行开始,到第一个符合条件的设定值对应行的前一行为止;后续周期依次从上一周期结束位置的下一行开始,重复边界判定流程
  • 规则匹配示例:
    • 第一周期:覆盖第1至12行。第12行处于第一个峰值、谷值出现之后,且a值为-1.0,满足≤-1.0的判定条件,因此作为本周期的结束边界
    • 第二周期:覆盖第13行至第27行。第27行的a值为0,满足≤0.5的判定条件,且处于第二个峰、谷点位之后,因此作为本周期的结束边界
  • 每个周期需要为组内所有行绑定统一属性:
    • 周期编号cycles:按周期顺序从1开始递增
    • 振幅span:本周期内峰值与谷值的差值
    • 设定值set:本周期峰值减去振幅的1/2

预期输出效果

按上述规则为数据框补充周期、振幅、设定值字段后,最终输出效果如下:

> print(a)
    a  b cycles span   set
1   0  1      1    6 -1.0
2   1  2      1    6 -1.0
3   2  3      1    6 -1.0
4   3  4      1    6 -1.0
5   2  5      1    6 -1.0
6   1  6      1    6 -1.0
7   0  7      1    6 -1.0
8  -1  8      1    6 -1.0
9  -2  9      1    6 -1.0
10 -3 10      1    6 -1.0
11 -2 11      1    6 -1.0
12 -1 12      1    6 -1.0
13  0 13      2    7  0.5
14  1 14      2    7  0.5
15  2 15      2    7  0.5
16  3 16      2    7  0.5
17  4 17      2    7  0.5
18  3 18      2    7  0.5
19  2 19      2    7  0.5
20  1 20      2    7  0.5
21  0 21      2    7  0.5
22 -1 22      2    7  0.5
23 -2 23      2    7  0.5
24 -3 24      2    7  0.5
25 -2 25      2    7  0.5
26 -1 26      2    7  0.5
27  0 27      2    7  0.5
28  1 28      3    5 -1.5
29  2 29      3    5 -1.5
30  1 30      3    5 -1.5
31  0 31      3    5 -1.5
32 -1 32      3    5 -1.5
33 -2 33      3    5 -1.5
34 -3 34      3    5 -1.5
35 -2 35      3    5 -1.5
36 -1 36      4    6 -1.0
37  0 37      4    6 -1.0
38  1 38      4    6 -1.0
39  2 39      4    6 -1.0
40  3 40      4    6 -1.0
41  2 41      4    6 -1.0
42  1 42      4    6 -1.0
43  0 43      4    6 -1.0
44 -1 44      4    6 -1.0
45 -2 45      4    6 -1.0
46 -3 46      4    6 -1.0
47 -2 47      4    6 -1.0
48 -1 48      4    6 -1.0
49  0 49      5    7 -1.5
50  1 50      5    7 -1.5
51  2 51      5    7 -1.5
52  3 52      5    7 -1.5
53  2 53      5    7 -1.5
54  1 54      5    7 -1.5
55  0 55      5    7 -1.5
56 -1 56      5    7 -1.5
57 -2 57      5    7 -1.5
58 -3 58      5    7 -1.5
59 -4 59      5    7 -1.5
60 -3 60      5    7 -1.5
61 -2 61      5    7 -1.5
62 -1 62      5    7 -1.5
63  0 63      5    7 -1.5

内容的提问来源于stack exchange,提问作者Maral Dorri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 06:27:04