2016-07-26 41 views
1

问题

在数据呈现递增趋势和递减趋势的情况下,如何确定具体的递减趋势?如何识别R中数据的特定递减趋势?

数据

我有在数据帧v4 3个变量。 Time是以秒为单位的时间,sacc是车辆的加速度(或减速度),dV =车辆速度减去前导车辆速度(在相同车道中)并且Vehicle.ID2是车辆对的唯一ID。以下是示例性数据为1对:

> dput(v4) 
structure(list(sacc = c(1.3, 0.9, 0.05, -0.03, -0.5, -1.5, -0.4, 
0.2, 0.36, 0.37, -0.04, -1.5, -2.4, -1.7, -2.2, -0.003, -4e-04, 
4e-04, 0.002, 0.02, 0.3, 1.6, 1.5, 0), dV = c(4.2, 5.7, 6.6, 
7.3, 7.4, 7, 6.5, 6.6, 6.7, 7.1, 7.6, 7.5, 6.7, 4.3, 2.4, 0.16, 
0.11, 0.04, -0.009, -0.17, -0.9, -0.7, -0.6, -1.5), Time = 1:24, 
    Vehicle.ID2 = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L), class = "factor", .Label = "1-2")), .Names = c("sacc", 
"dV", "Time", "Vehicle.ID2"), row.names = c(NA, -24L), class = "data.frame") 

dV连续增加或连续减小。你可以看到附加的线图dV增加了一段时间,然后下降,再次增加,直到观测数字11.在这一点上,由于连续减速(负saccdV连续减少,直到它变为零相同的速度),然后为负(导致车辆速度比跟随车辆更快)。

enter image description here

我想要做什么:

我要确定这个特定的下降趋势时dV一些正值第一负值去。然后我想在此期间获得总时间。在示例数据中,第19(dV变为负数)和第11(dV开始减少)之间的总时间为8秒。

我的尝试:

我能找到的地步dV变为负值:

require(dplyr) 
v4 <- v4 %>% 
group_by(Vehicle.ID2) %>% 
mutate(trend_dV = sign(dV)-sign(lag(dV))) 

但经过这个我一无所知。请指导我如何找到具体的减少趋势?

+0

我想找到的下降,这使得'dV'负。然后我会有两点。第一个下降开始(积极'dV')和第二个'dV'变为负数。 –

回答

1
v4$delta <- NA 
for(i in 2:nrow(v4)){ 
    v4$delta[i] <- v4$dV[i] - v4$dV[i-1] 
} 

v4$start_flag <- 0 
for(i in nrow(v4):2){ 
    if(v4$delta[i] > 0 & v4$dV[i] > 0){ 
    v4$start_flag[i] <- 1 
    break 
    } 
} 

v4 
 sacc  dV Time Vehicle.ID2 delta start_flag 
1 1.3000 4.200 1   1-2  NA   0 
2 0.9000 5.700 2   1-2 1.500   0 
3 0.0500 6.600 3   1-2 0.900   0 
4 -0.0300 7.300 4   1-2 0.700   0 
5 -0.5000 7.400 5   1-2 0.100   0 
6 -1.5000 7.000 6   1-2 -0.400   0 
7 -0.4000 6.500 7   1-2 -0.500   0 
8 0.2000 6.600 8   1-2 0.100   0 
9 0.3600 6.700 9   1-2 0.100   0 
10 0.3700 7.100 10   1-2 0.400   0 
11 -0.0400 7.600 11   1-2 0.500   1 
12 -1.5000 7.500 12   1-2 -0.100   0 
13 -2.4000 6.700 13   1-2 -0.800   0 
14 -1.7000 4.300 14   1-2 -2.400   0 
15 -2.2000 2.400 15   1-2 -1.900   0 
16 -0.0030 0.160 16   1-2 -2.240   0 
17 -0.0004 0.110 17   1-2 -0.050   0 
18 0.0004 0.040 18   1-2 -0.070   0 
19 0.0020 -0.009 19   1-2 -0.049   0 
20 0.0200 -0.170 20   1-2 -0.161   0 
21 0.3000 -0.900 21   1-2 -0.730   0 
22 1.6000 -0.700 22   1-2 0.200   0 
23 1.5000 -0.600 23   1-2 0.100   0 
24 0.0000 -1.500 24   1-2 -0.900   0 
> 
+1

谢谢。这很有帮助。 –

+0

@umairdurrani你非常欢迎 –