Преобразование формата времени в числовой с помощью R

StackOverflow https://stackoverflow.com/questions/8883554

Вопрос

В большинстве случаев мы преобразуем числовое время в формат 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 часов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top