Преобразование формата времени в числовой с помощью R
Вопрос
В большинстве случаев мы преобразуем числовое время в формат posixct с помощью R. Однако иногда мы хотим сравнить, какая временная точка находится раньше, тогда мы предпочитаем числовой формат времени.Таким образом, преобразование формата времени в числовой - это вполне практический вопрос.Например, у меня есть формат данных "2001-03-13 10:31:00",
родовое словоИспользуя R, я хочу выяснить, как преобразовать его в число, напримерюлианское время, что-то вроде секунд между 1970-01-01 00:00:00 и 2001-03-13 10:31:00.
Есть ли у вас предложения?
Юлианский календарь появился в 45 г. до н.э. (709 г. до н.э.) как реформа римского календаря Юлием Цезарем.Он был выбран после консультации с астрономом Сосигеном Александрийским и, вероятно, был разработан так, чтобы соответствовать тропическому году (известному по крайней мере со времен Гиппарха).см. http://en.wikipedia.org/wiki/Julian_calendar
Решение
Если вы просто хотите удалить ":", "" и "-" из вектора символов, этого будет достаточно:
родовое словоВы должны прочитать раздел о классах символов примерно на 1/4 части? regex.Поскольку "-" является особенным в этом контексте как оператор диапазона, его нужно размещать первым или последним.
После вашего редактирования ответ будет очевиден тем, что написал @joran, за исключением того, что вам нужно сначала преобразовать в класс DateTime:
родовое словоТакже следует отметить, что операторы сравнения действительно работают для переменных класса Date и DateTime, поэтому преобразование может вообще не требоваться.Это сравнивает «начало» со временем на секунду позже и правильно сообщает, что начало раньше:
родовое словоДругие советы
На основе измененного вопроса это должно делать то, что вы хотите:
родовое словоРезультатом является временная метка unix, количество секунд с начала эпохи, при условии, что метка времени находится в местном часовом поясе.
Пример из справки ?as.POSIX
дает
так было бы для вас
родовое словоМожет быть, это может также работать:
library(lubridate)
...
df <- '24:00:00'
as.numeric(hms(df))
.
HMS () преобразует ваши данные из одного временного формата в другое, это позволит вам преобразовать его в секунды.Смотрите Full Документация .
Я попробовал это, потому что у меня были проблемы с данными, которые находились в этом формате, но более 24 часов.