среда, 28 октября 2015 г.

Работа с финансовыми временными рядами в R. Часть 4. Работа с датами и временем с помощью пакета lubridate


Функции пакета lubridate (доступного в CRAN), созданного Garrett Grolemund и Hadley Wickham, несколько упрощают работу с датами и временем в R. Функции пакета lubridate помогают пользователям:
  • идентифицировать и парсить временные данные;
  • извлекать и модифицировать компоненты даты и времени;
  • производить точные вычисления с датами и временем, а также с временными промежутками;
  • работать с часовыми поясами и переходом на летнее время.
Для загрузки пакета и просмотра доступных функций используйте следующие команды:
> library(lubridate)
> library(help=lubridate)


Парсинг дат и времени

Вместо использования функции as.POSIXct() для создания объектов класса POSIXct из символьных строк вы можете использовать функции интеллектуального парсинга из пакета lubridate:

> ymd("20131219")
[1] "2013-12-19 UTC"
> ymd("2013 Dec 19")
[1] "2013-12-19 UTC"
> ymd_hms("20131219101707")
[1] "2013-12-19 10:17:07 UTC"
> ymd_hms("2013 Dec 19 10:17:07")
[1] "2013-12-19 10:17:07 UTC"
> mdy("Dec 19, 2013")
[1] "2013-12-19 UTC"
> mdy_hms("December 19, 2013 10:17:07")
[1] "2013-12-19 10:17:07 UTC"
> dmy_hms("19-Dec, 2013 10:17:07")
[1] "2013-12-19 10:17:07 UTC"
Обратите внимание, что функции lubridate не требуют строгого форматирования строк. Они используют алгоритм интеллектуального парсинга для автоматического извлечения дат и времени из строк.
Часовой пояс по умолчанию для функций lubridate - GMT/UTC. Другие часовые пояса могут быть заданы с помощью опционального аргумента tz.

> ymd_hms("2013 Dec 19 10:17:07", tz="")
[1] "2013-12-19 10:17:07 PST"
Приведенные выше функции также работают с входящими данными в числовом формате. Например:

> ymd(20131219)
[1] "2013-12-19 UTC"
Текущую дату и время можно получить с помощью функции now(), если нужна только дата, то для этого используется функция today().

Запись и извлечение информации
В таблице ниже представлены функции пакета lubridate для извлечения и записи информации в объекты даты и времени (Date или POSIXt).

Компонент даты
Функция
Год
year()
Месяц
month()
Неделя
week()
День года
yday()
День месяца
mday()
День недели
wday()
Час
hour()
Минута
minute()
Секунда
second()
Часовой пояс
tz()

Например,
> myDateTime = ymd_hms("2013 Dec 19 10:17:07")
> myDateTime[1] "2013-12-19 10:17:07 UTC"
> year(myDateTime)
[1] 2013
> month(myDateTime)
[1] 12
> week(myDateTime)
[1] 51
> yday(myDateTime)
[1] 353
> mday(myDateTime)
[1] 19
> wday(myDateTime)
[1] 5
> hour(myDateTime)
[1] 10
> minute(myDateTime)
[1] 17
> second(myDateTime)
[1] 7
> tz(myDateTime)
[1] "UTC"
> wday(myDateTime, label=TRUE)
[1] Thurs
Levels: Sun < Mon < Tues < Wed < Thurs < Fri < Sat
> month(myDateTime, label=TRUE)
[1] Dec
12 Levels: Jan < Feb < Mar < Apr < May < Jun < Jul < Aug < ... < Dec
Функции извлечения могут также использоваться для записи значений определенных элементов даты и времени.

> mday(myDateTime) = 20
> myDateTime
[1] "2013-12-20 10:17:07 UTC"
Вы можете модифицировать различные компоненты объектов даты и времени с помощью функции update().

> update(myDateTime, year=2014, month=1,
+
day=1, hour=5, min=0, sec=0)

[1] "2014-01-01 05:00:00 UTC"

Комментариев нет:

Отправить комментарий