Изменение фрейма данных в R датах формы S. 10 до 2019/09/10

#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