R Language
Класс Date
Поиск…
замечания
похожие темы
Смешанные заметки
-
Date
: Сохраняет время как количество дней с момента UNIX в1970-01-01
. с отрицательными значениями для более ранних дат. - Он представлен как целое число (однако он не применяется во внутреннем представлении)
- Они всегда печатаются по правилам текущего григорианского календаря, хотя календарь давно не использовался.
- Он не отслеживает временные интервалы, поэтому его не следует использовать для усечения времени из объектов
POSIXct
илиPOSIXlt
. -
sys.Date()
возвращает объект классаDate
Другие заметки
- lumridate 's
ymd
,mdy
и т. д. являются альтернативамиas.Date
которые также анализируют класс Date; см. Синхронизация дат и времени от строк с помощью lubridate . - data.table экспериментальный класс IDATE «ы получают из и в основном взаимозаменяемыми с датой, но хранится в виде целого числа , а не в два раза.
Форматирование дат
Для форматирования Dates
мы используем format(date, format="%Y-%m-%d")
с помощью POSIXct
(заданного из as.POSIXct()
) или POSIXlt
(данный из as.POSIXlt()
)
d = as.Date("2016-07-21") # Current Date Time Stamp format(d,"%a") # Abbreviated Weekday ## [1] "Thu" format(d,"%A") # Full Weekday ## [1] "Thursday" format(d,"%b") # Abbreviated Month ## [1] "Jul" format(d,"%B") # Full Month ## [1] "July" format(d,"%m") # 00-12 Month Format ## [1] "07" format(d,"%d") # 00-31 Day Format ## [1] "21" format(d,"%e") # 0-31 Day Format ## [1] "21" format(d,"%y") # 00-99 Year ## [1] "16" format(d,"%Y") # Year with Century ## [1] "2016"
Подробнее см. ?strptime
.
Даты
Чтобы принудить переменную к дате использовать as.Date()
.
> x <- as.Date("2016-8-23")
> x
[1] "2016-08-23"
> class(x)
[1] "Date"
Функция as.Date()
позволяет вам предоставить аргумент формата. По умолчанию используется значение %Y-%m-%d
, которое равно Year-month-day.
> as.Date("23-8-2016", format="%d-%m-%Y") # To read in an European-style date
[1] "2016-08-23"
Строка формата может быть помещена либо в пару одинарных кавычек, либо в двойные кавычки. Даты обычно выражаются в различных формах, таких как: "dm-yy"
или "dm-YYYY"
или "md-yy"
или "md-YYYY"
или "YYYY-md"
или "YYYY-dm"
. Эти форматы также можно выразить, заменив "-"
на "/"
. Более того, даты также выражаются в формах, например: «6 ноября 1986 года» или «6 ноября 1986 года» или «6 ноября 1986 года» или «6 ноября 1986 года» и т. Д. Функция as.Date () принимает все такие символьные строки, и когда мы указываем соответствующий формат строки, она всегда выводит дату в форме "YYYY-md"
.
Предположим, что у нас есть строка даты "9-6-1962"
в формате "%d-%m-%Y"
.
#
# It tries to interprets the string as YYYY-m-d
#
> as.Date("9-6-1962")
[1] "0009-06-19" #interprets as "%Y-%m-%d"
>
as.Date("9/6/1962")
[1] "0009-06-19" #again interprets as "%Y-%m-%d"
>
# It has no problem in understanding, if the date is in form YYYY-m-d or YYYY/m/d
#
> as.Date("1962-6-9")
[1] "1962-06-09" # no problem
> as.Date("1962/6/9")
[1] "1962-06-09" # no problem
>
Указав правильный формат входной строки, мы можем получить желаемые результаты. Мы используем следующие коды для указания форматов функции as.Date () .
Формат кода | Имея в виду |
---|---|
%d | день |
%m | месяц |
%y | год в 2-значных цифрах |
%Y | год в 4-значных цифрах |
%b | сокращенный месяц в 3 символах |
%B | полное название месяца |
Рассмотрим следующий пример, определяющий параметр формата :
> as.Date("9-6-1962",format="%d-%m-%Y")
[1] "1962-06-09"
>
Формат имя параметра можно опустить.
> as.Date("9-6-1962", "%d-%m-%Y")
[1] "1962-06-09"
>
Несколько раз имена месяцев, сокращенных до первых трех символов, используются при написании дат. В этом случае мы используем спецификатор формата %b
.
> as.Date("6Nov1962","%d%b%Y")
[1] "1962-11-06"
>
Обратите внимание, что между членами в строке даты нет ни '-'
ни '/'
или белых пробелов. Строка формата должна точно соответствовать этой входной строке. Рассмотрим следующий пример:
> as.Date("6 Nov, 1962","%d %b, %Y")
[1] "1962-11-06"
>
Обратите внимание, что в строке даты есть запятая, а значит, и запятая в спецификации формата. Если запятая в строке формата опущена, это приводит к NA
. Пример использования спецификатора формата %B
выглядит следующим образом:
> as.Date("October 12, 2016", "%B %d, %Y")
[1] "2016-10-12"
>
> as.Date("12 October, 2016", "%d %B, %Y")
[1] "2016-10-12"
>
Формат %y
является системным и, следовательно, следует использовать с осторожностью. Другими параметрами, используемыми с этой функцией, являются начало и tz (часовой пояс).
Разбор строк на объекты даты
R содержит класс Date, который создается с помощью as.Date()
, который берет строку или вектор строк, а если дата не соответствует формату YYYY-MM-DD
ISO 8601 YYYY-MM-DD
, строка форматирования strptime
tokens ,
as.Date('2016-08-01') # in ISO format, so does not require formatting string
## [1] "2016-08-01"
as.Date('05/23/16', format = '%m/%d/%y')
## [1] "2016-05-23"
as.Date('March 23rd, 2016', '%B %drd, %Y') # add separators and literals to format
## [1] "2016-03-23"
as.Date(' 2016-08-01 foo') # leading whitespace and all trailing characters are ignored
## [1] "2016-08-01"
as.Date(c('2016-01-01', '2016-01-02'))
# [1] "2016-01-01" "2016-01-02"