R формат ответа на разницу во времени - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь отформатировать ответ от вычитания 2 раза.

Вот пример:

> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdif1 <- as.numeric(strptime(as.character(timer2$time2), "%H:%M:%S%OS") - strptime(as.character(timer2$time1), "%H:%M:%S%OS"))
> timer2$tdif2 <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S:%OS") - strptime(as.character(timer2$time2), "%H:%M:%S:%OS"))
> timer2$tdifMax <- as.numeric(strptime(as.character(timer2$time3), "%H:%M:%S.%OS") - strptime(as.character(timer2$time1), "%H:%M:%S.%OS"))
> head(timer2)
         time1        time2        time3         tdif1 tdif2 tdifMax
1 08:00:20.799 08:00:20.799 08:00:20.799  0.0000000000    NA       0
2 08:00:21.996 08:00:22.071 08:00:23.821 -0.9249999523    NA       2
3 08:00:29.200 08:00:29.200 08:00:29.591  0.0000000000    NA       0
4 08:00:31.073 08:00:31.372 08:00:31.384  0.2990000248    NA       0
5 08:00:31.867 08:00:31.867 08:00:31.971  0.0000000000    NA       0
6 08:00:37.174 08:00:38.073 08:00:38.153 -0.1010000706    NA       1

Я использовал другую формулу форматирования для доли секунды в tdif1, tdif2 и tdif3, но ни один из них не дает ответа в секундах и долях секунды (для tdif [2] это должно быть 0,075).Есть предложения?

1 Ответ

8 голосов
/ 22 декабря 2011

Вы неправильно указали формат, ваши данные в формате "%H:%M:%OS". Также я бы посоветовал вам сделать математику в цифрах - это дает вам всегда секунды.

Итак, ваш пример:

sec <- function(x) as.numeric(strptime(x, "%H:%M:%OS"))

timer2$tdif1   <- sec(timer2$time2) - sec(timer2$time1)
timer2$tdif2   <- sec(timer2$time3) - sec(timer2$time2)
timer2$tdifMax <- sec(timer2$time3) - sec(timer2$time1)

и вывод:

> head(timer2)
         time1        time2        time3      tdif1      tdif2   tdifMax
1 08:00:20.799 08:00:20.799 08:00:20.799 0.00000000 0.00000000 0.0000000
2 08:00:21.996 08:00:22.071 08:00:23.821 0.07500005 1.75000000 1.8250000
3 08:00:29.200 08:00:29.200 08:00:29.591 0.00000000 0.39100003 0.3910000
4 08:00:31.073 08:00:31.372 08:00:31.384 0.29900002 0.01200008 0.3110001
5 08:00:31.867 08:00:31.867 08:00:31.971 0.00000000 0.10399985 0.1039999
6 08:00:37.174 08:00:38.073 08:00:38.153 0.89899993 0.08000016 0.9790001
...