我有一组位置测量,我必须通过线性回归才能获得斜率值。
我先做一些子集,然后得到这个数据帧(显示子集)。
us[1:30,1:5]
estado Tiempo UT TR UT.CHX
3087 3 618.2 16561 15861 16313
3088 3 618.4 16561 15861 16313
3089 3 618.6 16561 15861 16313
3090 3 618.8 16561 15861 16313
3091 3 619.0 16561 15861 16313
3092 3 619.2 16561 15861 16313
3093 3 619.4 16561 15861 16313
3094 3 619.6 16561 15861 16313
3095 3 619.8 16561 15861 16313
3096 3 620.0 16561 15861 16313
3097 3 620.2 16561 15861 16313
3098 3 620.4 16561 15861 16313
3099 3 620.6 16561 15861 16313
3100 3 620.8 16561 15861 16313
3101 3 621.0 16561 15861 16313
3102 3 621.2 16561 15861 16313
3103 3 621.4 16561 15861 16313
3104 3 621.6 16561 15861 16313
3105 3 621.8 16561 15860 16313
3106 3 622.0 16561 15860 16313
3107 3 622.2 16561 15860 16313
3108 3 622.4 16561 15859 16313
3109 3 622.6 16561 15859 16313
3110 3 622.8 16561 15859 16313
3111 3 623.0 16561 15859 16313
3112 3 623.2 16561 15859 16312
3113 3 623.4 16561 15859 16310
3114 3 623.6 16561 15859 16309
3115 3 623.8 16561 15859 16308
3116 3 624.0 16561 15859 16307
我必须将每次开始的第一个值设置为零(您可以看到“Tiempo”列不连续,它以45行为一组跳转值)并将每个集合中的下一个值重新激活到该初始位置。其背后的想法是为每列获得一组递增值(随着位置的变化),并将其与“Tiempo”变量对应,以便稍后获得每列的斜率。
如果我使用
veltraining<-cbind(us$Tiempo,diffinv(abs(diff(as.matrix(us[,3:length(us)])))))
不连续的跳跃破坏了这项工作。
veltraining[1:30,1:5]
col1 col2 col3 col4 col5
[1,] 618.2 0 0 0 0
[2,] 618.4 0 0 0 0
[3,] 618.6 0 0 0 0
[4,] 618.8 0 0 0 0
[5,] 619.0 0 0 0 0
[6,] 619.2 0 0 0 10
[7,] 619.4 0 0 0 19
[8,] 619.6 0 0 0 25
[9,] 619.8 0 0 0 33
[10,] 620.0 0 0 0 39
[11,] 620.2 0 0 0 42
[12,] 620.4 0 0 0 42
[13,] 620.6 0 0 0 42
[14,] 620.8 0 0 0 43
[15,] 621.0 0 0 0 44
[16,] 621.2 0 0 0 44
[17,] 621.4 0 0 0 45
[18,] 621.6 0 0 0 47
[19,] 621.8 0 1 0 49
[20,] 622.0 0 1 0 51
[21,] 622.2 0 1 0 53
[22,] 622.4 0 2 0 55
[23,] 622.6 0 2 0 56
[24,] 622.8 0 2 0 58
[25,] 623.0 0 2 0 58
[26,] 623.2 0 2 1 72
[27,] 623.4 0 2 3 80
[28,] 623.6 0 2 4 80
[29,] 623.8 0 2 5 83
[30,] 624.0 0 2 6 92
预期输出应该是这样的数据帧(子集)。不要介意列名,我只是在做完这篇文章之后给我们命名了,顺序是一样的。
primer[1:10,1:7]
Tiempo UT TR UT.CHX TR.CHX TR.CHX.1 UT.CHX.1
1 618.2 0 0 0 0 0 0
2 618.4 0 0 0 0 0 0
3 618.6 0 0 0 0 0 0
4 618.8 0 0 0 0 0 0
5 619.0 0 0 0 0 9 0
6 619.2 0 0 0 10 14 0
7 619.4 0 0 0 19 15 0
8 619.6 0 0 0 25 18 0
9 619.8 0 0 0 33 39 0
10 620.0 0 0 0 39 64 0
我不知道如何简单地分割数据框 - 这意味着没有大量的子集,命名和类似的东西 - 我不知道“diffinv(abs(diff ...)策略是否是最好的。
谢谢