Использование gsub в R to для условного сопоставления с несколькими шаблонами

#r #datetime-format

#r #datetime-format

Вопрос:

Я пытаюсь переформатировать динамическую строку, которая описывает дату дня. Сегодняшняя строка — «6 декабря 2020 года». Завтра это будет «7 декабря 2020 года».

Я хотел бы переформатировать строку так, чтобы дни месяца 1-9 были написаны «01», «02» и т.д.

Строка очищена, но для иллюстративных целей давайте просто скажем:

lastupDate <- "December 6, 2020"

Ниже приведен очень неуклюжий, повторяющийся способ переформатирования строки независимо от фактической даты:

 lastupDATE <- gsub(" 1,", " 01,", lastupDATE)
lastupDATE <- gsub(" 2,", " 02,", lastupDATE)
lastupDATE <- gsub(" 3,", " 03,", lastupDATE)
lastupDATE <- gsub(" 4,", " 04,", lastupDATE)
lastupDATE <- gsub(" 5,", " 05,", lastupDATE)
lastupDATE <- gsub(" 6,", " 06,", lastupDATE)
lastupDATE <- gsub(" 7,", " 07,", lastupDATE)
lastupDATE <- gsub(" 8,", " 08,", lastupDATE)
lastupDATE <- gsub(" 9,", " 09,", lastupDATE)
 

Это довольно некрасиво. Это делает свое дело, но мне любопытно, есть ли у кого-нибудь идея получше.

Большое спасибо!

Ответ №1:

Мы можем преобразовать в Date класс, а затем выполнить format

 format(as.Date(lastupDate, '%B %d, %Y'), "%m %d, %Y")
#[1] "12 06, 2020"