Я пытаюсь преобразовать дату и время в метку времени с миллисекундами в R с помощью data.table (у меня есть ~ 300M строк, поэтому скорость имеет значение! Поэтому, если у вас есть более быстрая опция чем strptime (например, векторная функция, в которой мне не нужен аргумент «by» в data.table), я был бы в восторге! :)).R Milliseconds in Strptime data.table
вопрос до сих пор является следующее:
library(data.table)
options(digits.secs = 3)
a <- data.table(day = "20150727", time = "11:10:05.016")
a[, mtime := strptime(paste(day, time), "%Y%m%d %H:%M:%OS", tz = "GMT"),
by = 1:nrow(a)]
a
#> a
# day time mtime
#1: 20150727 11:10:05.016 5.016
Вопрос заключается в том, что время изменения, безусловно, не так ... Я хочу, чтобы получить всю метку времени, а не только секунды. Когда я делаю это вручную он работает отлично:
strptime(paste("20150727", "11:10:05.016"), "%Y%m%d %H:%M:%OS", tz = "GMT")
# [1] "2015-07-27 11:10:05.016 GMT"
Любые идеи? Спасибо!
Вы не выполняете операции группировки здесь, поэтому, если скорость имеет значение, вам обязательно нужно избавиться от 'by = 1: nrow (a)' –
Хорошая точка! Без аргумента я получил ошибку: _ [...] Поставляется 9 элементов, которые будут назначены 1000 элементам столбца 'str' (возвращенный остаток из 1 предмета) _. Однако, по аргументу, я не получил никаких ошибок, кроме неправильных значений, поэтому думал, что мне это нужно! – David
Это не ошибка, это предупреждение. Это происходит потому, что 'POSIXlt' имеет много атрибутов. Это не произойдет с классом 'POSIXct' –