Форматирование даты в R без начальных нулей
Есть ли способ использовать format
функция объекта даты, в частности, объекта класса POSIXlt
, POSIXct
, или же Date
с форматом %Y, %m, %d
так, что ведущие нули снимаются с каждого из этих 3 полей?
Например, я хотел бы format(as.Date("1998-09-02"), "%Y, %m, %d")
возвращать 1998, 9, 2
и не 1998, 09, 02
,
2 ответа
Просто удалите начальные нули в конце:
> gsub(" 0", " ", format(as.Date("1998-09-02"), "%Y, %m, %d"))
[1] "1998, 9, 2"
Используйте %e, чтобы получить начальный пробел вместо начального нуля.
Вы можете сделать это, просто изменив свой strftime
строка формата. Однако это зависит от вашей платформы (Unix или Windows).
Unix
Вставьте знак минус (-
) перед каждым термином, из которого вы хотите удалить ведущие нули:
format(as.Date("2020-06-02"), "%Y, %-m, %-d")
[1] "2020, 6, 2"
Windows
Вставьте знак фунта (#
) перед каждым желаемым термином:
format(as.Date("2020-06-02"), "%Y, %#m, %#d")
[1] "2020, 6, 2"
Я нашел обходной путь с помощью year
, month
а также day
функция lubridate
пакет С помощью glue::glue
, это легко сделать следующим образом:
require(lubridate)
require(glue)
dt <- "1998-09-02"
glue("{year(dt)}, {month(dt)}, {day(dt)}")
# 1998, 9, 2
Более общее решение с использованием gsub для удаления ведущих нулей из цифр дня или месяца, выдаваемых%m или%d. Это удаляет любой ноль, которому не предшествует цифра:
gsub("(\\D)0", "\\1", format(as.Date("1998-09-02"), "%Y, %m, %d"))