标准化数据的更改点

时间:2014-10-15 16:50:24

标签: r plot normalization

我有一个标准化为区间[0,1]的数据集 我试图找出数据中的变化点。
如果我将数据绘制成线图,那么我必须找到尖峰的起点 数据采用这种格式

1                    0.00000000
2                    0.01617486
3                    0.01814208
4                    0.01530055
5                    0.01857923
6                    0.01595628
7                    0.01945355
8                    0.01530055
9                    0.01530055
10                   0.01639344
11                   0.01573770
12                   0.01092896
13                   0.01836066
14                   0.01551913
15                   0.01945355
16                   0.26841530
17                   0.14754098
18                   0.01726776
19                   0.01704918
20                   0.01726776
21                   0.01945355
22                   1.00000000
23                   0.08459016
24                   0.02732240
25                   0.02579235
26                   0.01551913
27                   0.01923497
28                   0.10185792
29                   0.12765027

在重复上一篇文章之后,我尝试了这段代码。

library(data.table)
myDT <- as.data.table(t1)
myDT[,change:=t1-t1[1]]
myDT

但它显示所有更改为0

  1:                  0.00000000      0
  2:                  0.01617486      0
  3:                  0.01814208      0
  4:                  0.01530055      0
  5:                  0.01857923      0
 ---                                   
135:                  0.12459016      0
136:                  0.10032787      0
137:                  0.10885246      0
138:                  0.16109290      0
139:                  0.44371585      0

请帮帮我

1 个答案:

答案 0 :(得分:2)

试试这个:

t1["change"] <- c(t1[2:nrow(t1), 1], 0) - t1[, 1]

细分如下:

t1["change"] 

会在数据框中添加一列

c(..., 0)

创建一个向量,其中项目2位于列向量的末尾。然后你减去你的列向量来获得差异。

现在你需要注意的一件事是,我放置了......你可能会得到一个你应该扔掉的价值。通常在执行运行平均值或差异时,可用数据的长度会缩小到向量的一端,具体取决于您“移动”向量的方式或滑动窗口的开始位置。

更新:如果您的代码检查NAs,您可以将NA放在我所在的位置。