Переход от ускорения (м / с ^ 2) к скорости (м / с), повторяя формулу Excel - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть набор данных, который содержит ускорение и столбец времени.В пределах excel я могу использовать их для создания метрики скорости.Однако я не могу воспроизвести формулу в R, так как один шаг включает добавление ячейки к предыдущей ячейке в данных.

В Excel формула имеет вид H5 = H4+(G5*(B5-B4)), который вычисляет разницу во времени между показаниями (B5-B4), умножает результат на ускорение (G5*(B5-B4)) и затем добавляет результаты к значению начальной скорости, котороевсегда ноль.

Первые два шага в порядке, но я не нашел, как повторить третий

data %>%
  mutate(
    Time_diff = Time - lag(Time),
    Accel_Time = Accel*Time_diff
  )

Вот также набор данных с ожидаемым столбцом скорости, я пропустил впереднемного в данных здесь, поскольку первые 100 или около того строк имеют нулевую скорость чтения.

  > dput(head(data1, 20))
structure(list(Time = c(1.002, 1.004, 1.006, 1.008, 1.01, 1.012, 
          1.014, 1.016, 1.018, 1.02, 1.022, 1.024, 1.026, 1.028, 1.03, 
          1.032, 1.034, 1.036, 1.038, 1.04), Accel = c(-0.04, -0.04, -0.05, 
          -0.05, -0.04, -0.04, -0.05, -0.05, -0.05, -0.05, -0.05, -0.06, 
          -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.07, -0.06),          
          Velocity = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), 
          Time_diff = c(NA, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 
          0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002, 0.002), 
          Accel_Time = c(NA, -0.0000800000000000001, -0.0001, -0.0001, 
          -0.0000800000000000001, -0.0000800000000000001, -0.0001, -0.0001, 
          -0.0001, -0.0001, -0.0001, -0.00012, -0.00012, -0.00012, -0.00012, -0.00012, -0.00012, -0.00012, -0.00014, -0.00012)), 
          row.names = c(NA, 20L), class = "data.frame")

Буду признателен за любые советы, спасибо

1 Ответ

0 голосов
/ 16 декабря 2018

построение примера фрейма данных:

data1 <- data.frame(Time = c(1.002, 1.004, 1.006, 1.008, 1.01, 1.012, 1.014, 1.016, 1.018, 1.02, 1.022, 1.024, 1.026, 1.028, 1.03, 1.032, 1.034, 1.036, 1.038, 1.04), Accel = c(-0.04, -0.04, -0.05, -0.05, -0.04, -0.04, -0.05, -0.05, -0.05, -0.05, -0.05, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.06, -0.07, -0.06))

  1. вычисление временной задержки - сначала используется 0, а затем просто вычитается 1-е из 2-го, 2-е из 3-го и т. Д.вкл .:

data1$Time_diff <- c(0,data1$Time[-1] - data1$Time[-length(data1$Time)])

вычисления accel_time:

data1$accel_time <- data1$Time_diff * data1$Accel

получение суммарной суммы скорости:

data1$velocity <- cumsum(data1$accel_time)

один вкладыш: cumsum(c(0,data1$Time[-1] - data1$Time[-length(data1$Time)]) * data1$Accel)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...