2017-02-27 71 views
0

使用一個非常簡單的公式,我如何計算瞬時速度。瞬時速度 - 參考之前的值

Vi = V0 + acceleration * time 

下面的任務是很容易與MS.Excel爲一個可以點擊前面的前一個單元,但是我們如何把這種R中?

acceleration <- c(1,2,3,4,5,4,3,2,1) 
time <- rep(0.1,9) 
df1 <- data.frame(acceleration, time) 


df1$instant.vel <- df1$acceleration * df1$time + .... 
+0

是否有在DF1速度列? – OmaymaS

+0

這就是我們想要得到 – lukeg

+1

假設v0 = 0,cumsum(df1 $加速* df1 $時間)給你你想要的? –

回答

0

使用dplyr::lag

library(dplyr) 

df1 %>% 
    mutate(V=(lag(acceleration,default=0)*lag(time,default=0))+(acceleration*time)) 

    acceleration time V 
1   1 0.1 0.1 
2   2 0.1 0.3 
3   3 0.1 0.5 
4   4 0.1 0.7 
5   5 0.1 0.9 
6   4 0.1 0.9 
7   3 0.1 0.7 
8   2 0.1 0.5 
9   1 0.1 0.3 

還是一步一步嘗試:

df1 %>% 
    mutate(V0=(acceleration*time)) %>% 
    mutate(V1=V0+(lag(acceleration,default=0)*lag(time,default=0))) 
    acceleration time V0 V1 
1   1 0.1 0.1 0.1 
2   2 0.1 0.2 0.3 
3   3 0.1 0.3 0.5 
4   4 0.1 0.4 0.7 
5   5 0.1 0.5 0.9 
6   4 0.1 0.4 0.9 
7   3 0.1 0.3 0.7 
8   2 0.1 0.2 0.5 
9   1 0.1 0.1 0.3