Как преобразовать строки Year-Mon в правильный формат даты при экспорте данных в R? - PullRequest
1 голос
/ 19 февраля 2020

Я пытаюсь убедиться, что As_of_Dt конвертируется в дату правильно, когда я экспортирую данные из R как CSV. В настоящее время, когда я экспортирую данные в Excel. Преобразует As_of_Dt неправильно. Месяц в основном остается тем же, но год становится днем, а год становится текущим годом (2020). Если as_of_dt 18 января, он становится 1/18/20 в Excel. Я пытаюсь предотвратить это.

Я бы хотел, чтобы этот столбец экспортировался как: 1/1/18, когда строка "18 января"

В настоящее время я пытался

Data$As_of_Dt2<- zoo::as.Date(zoo::as.yearmon(Data$As_of_Dt, "%y-%b"))

Но там были некоторые значения, которые были NA в этом новом столбце, который я сделал.

Ниже вы найдете все возможные даты для столбца As_of_Dt.

enter image description here

Обновление: я выяснил, что дата может иногда быть январь-2018 или 2018-январь Есть ли функция, которая может преобразовать эти две ситуации в 1/1/18?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Мы можем использовать as.yearmon

library(zoo)
as.Date( as.yearmon(dat, "%d-%b"))
#[1] "2020-11-01" "2020-11-01" "2020-01-01" "2020-06-01" "2020-02-01" "2020-04-01" "2020-12-01" "2020-08-01"
#[9] "2020-01-01" "2020-01-01" "2020-10-01" "2020-06-01" "2020-08-01" "2020-05-01" "2020-10-01" "2020-08-01"
#[17] "2020-11-01" "2020-01-01" "2020-12-01" "2020-11-01"

Если у нас есть несколько смешанных форматов, например, %b-%d вместе с показанным в посте, можно переставить подстроку с sub, чтобы сделать это один формат, а затем применить as.yearmon

as.Date(as.yearmon(sub("^([A-Za-z]+)-(\\d+)$", "\\2-\\1", dat), "%d-%b"))

данных

 dat <- c("20-Nov", "15-Nov", "20-Jan", "20-Jun", "20-Feb", "19-Apr", 
"16-Dec", "20-Aug", "17-Jan", "16-Jan", "17-Oct", "19-Jun", "17-Aug", 
"16-May", "16-Oct", "18-Aug", "19-Nov", "15-Jan", "17-Dec", "18-Nov")
1 голос
/ 19 февраля 2020

Вы можете использовать strptime.

strptime(dat, "%d-%b")
# [1] "2020-11-20 CET"  "2020-11-15 CET"  "2020-01-20 CET"  "2020-06-20 CEST"
# [5] "2020-02-20 CET"  "2020-04-19 CEST" "2020-12-16 CET"  "2020-08-20 CEST"
# [9] "2020-01-17 CET"  "2020-01-16 CET"  "2020-10-17 CEST" "2020-06-19 CEST"
# [13] "2020-08-17 CEST" "2020-05-16 CEST" "2020-10-16 CEST" "2020-08-18 CEST"
# [17] "2020-11-19 CET"  "2020-01-15 CET"  "2020-12-17 CET"  "2020-11-18 CET" 

Данные:

dat <- c("20-Nov", "15-Nov", "20-Jan", "20-Jun", "20-Feb", "19-Apr", 
"16-Dec", "20-Aug", "17-Jan", "16-Jan", "17-Oct", "19-Jun", "17-Aug", 
"16-May", "16-Oct", "18-Aug", "19-Nov", "15-Jan", "17-Dec", "18-Nov")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...