我有一个标准化为区间[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
请帮帮我
答案 0 :(得分:2)
试试这个:
t1["change"] <- c(t1[2:nrow(t1), 1], 0) - t1[, 1]
细分如下:
t1["change"]
会在数据框中添加一列
c(..., 0)
创建一个向量,其中项目2位于列向量的末尾。然后你减去你的列向量来获得差异。
现在你需要注意的一件事是,我放置了......你可能会得到一个你应该扔掉的价值。通常在执行运行平均值或差异时,可用数据的长度会缩小到向量的一端,具体取决于您“移动”向量的方式或滑动窗口的开始位置。
更新:如果您的代码检查NAs,您可以将NA放在我所在的位置。