Я хочу вычислить разность временных меток в миллисекундах.Разница ( time_diff ) в приведенном ниже примере всегда должна быть 0,2 , но я также получаю значения выше и ниже 0,2.
Проблема начинается, когда деление миллисекунд на секунды и / или добавление numeric
значений к POSIXct
объекту.
Я предполагаю, что это некоторая проблема с плавающей запятой, поэтому я попытался указать величину digits.sec и цифры, округление, усечение, и т. д ... Но проблема остается.
Почему именно это и как решить эту проблему?
library(dplyr)
options("digits.secs"=10)
options(digits = 10)
id <- 1:12
time <- c("9:34:50" , "9:34:50" , "9:34:51" , "9:34:51" , "9:34:51" , "9:34:51" ,
"9:34:51" , "9:34:52" , "9:34:52" , "9:34:52" , "9:34:52" , "9:34:52")
ms <- c(600,800,0,200,400,600,800,0,200,400,600,800)
time <- as.POSIXct(time, format="%H:%M:%S", tz="GMT")
# Problem begins here
timeNew <- time + (ms/1000)
timeNewDf <- data.frame(id=id,
time=timeNew)
timeNewDf %>% dplyr::mutate(
time_diff = c(diff(time),0)) %>%
dplyr::rowwise()