#r #dataframe #date #date-conversion
Вопрос:
Я относительно новичок в R и хотел бы преобразовать даты, которые в настоящее время находятся в форме S. 10, в даты формы 2019/09/10.
Заранее большое вам спасибо за всю вашу помощь!
Комментарии:
1. Я полагаю, что S означает сентябрь в этом формате. Как вы различаете май и март или июнь, Июль и январь или апрель и август?
2. В данных J означает январь, J* — июнь, а J** — июль.
3. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Вы можете достичь этого с помощью gsubfn
:
df <- data.frame(Date = c("J.1", "F.14", "M.12", "A.5", "M*.22", "J*.21", "J**.2", "A*.18", "S.10", "O.12", "N.8", "D.31"))
library(gsubfn)
df$Date <- gsubfn("J.|F.|M.|A.|M\*.|J\*.|J\*\*.|A\*.|S.|O.|N.|D.",
list("J." = "1 ",
"F." = "2 ",
"M." = "3 ",
"A." = "4 ",
"M*." = "5 ",
"J*." = "6 ",
"J**." = "7 ",
"A*." = "8 ",
"S." = "9 ",
"O." = "10 ",
"N." = "11 ",
"D." = "12 "),
df$Date)
df$Date <- as.Date(paste(2019, df$Date), format = "%Y %m %d")
Что дает следующий результат:
> df
Date
1 2019-01-01
2 2019-02-14
3 2019-03-12
4 2019-04-05
5 2019-05-22
6 2019-06-21
7 2019-07-02
8 2019-08-18
9 2019-09-10
10 2019-10-12
11 2019-11-08
12 2019-12-31