Функции пакета 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"
Комментариев нет:
Отправить комментарий