Возможно ли иметь переменную даты в формате день-месяц-год в R? - PullRequest
1 голос
/ 01 мая 2020

Я делаю учебник «Сделай свой собственный график», используя Rmarkdown, у меня есть набор данных с переменной даты (формат: день-месяц-год), используя dmy (переменную), я могу правильно классифицировать переменную как Переменная date '(формат: год-месяц-день).

Пользователи должны фильтровать на основе этой даты, и, поскольку голландцы используют формат день-месяц-год, я хочу разрешить им фильтровать на основе этого формата. (Я мог бы просто попросить их фильтровать в формате год-месяц-день, но это усложняет упражнение.)

Цель вопроса: заставить R распознать переменную как дату, но используя день-месяц-год формат

date <- "28-02-2020"
date <- as.Date(date, "%d-%m-%Y")
class(date)

снова: дата теперь дает "2020-02-28" - я хочу "28-02-2020" (с классом: Дата)

1 Ответ

1 голос
/ 01 мая 2020

Насколько я понимаю, нет, это невозможно .

Внутренне R хранит даты как количество дней с 1 января 1970 года и печатает их в формате «ГГГГ-мм-дд». Учитывая, что люди используют разные форматы по всему миру, было бы очень грязно, если бы было иначе.

В качестве дополнительного примечания, если вам нужно нанести данные на график, ggplot2 дает вам возможность правильно отформатировать даты , без необходимости превращать их в символы или факторы.

Как примечание 2, base r позволяет вам настроить формат даты, и это зависит от того, какой системный языковой стандарт доступен, который вы можете установить ( это отличается в разных системах, я использую Ubuntu):

Sys.setlocale("LC_TIME", "en_US.utf8")
format(Sys.Date(), format = "%Y-%b-%d")
[1] "2020-May-01"

Sys.setlocale("LC_TIME", "de_CH.utf8")
format(Sys.Date(), format = "%Y-%b-%d")
[1] "2020-Mai-01"

См. дополнительную информацию здесь:

Как изменить локаль R?

Как установить язык даты по умолчанию в R

...