Перевести коэффициент (неоднородный) в дату в R? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть даты в этом формате:

12 апреля, 12 декабря, 30 июля, 14 марта, 29 февраля, 16 мая, 17 мая, 20 ноября, 14 ноября.

R рассматривает это как факторную переменную.Я хочу, чтобы он относился к нему как к дате, и там, где отсутствует день даты, он должен заменить его на 1-е.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Условно добавить «01-», если первые три символа не находятся в системном векторе, month.abb

as.Date( ifelse( substr(dtvec,1,3) %in% month.abb, paste0("01-",dtvec), dtvec) ,"%d-%b-%y")
[1] "2012-04-01" "2012-12-01" "2014-07-30" "2016-03-01" "2016-02-29" "2017-05-01" "2014-11-20"
0 голосов
/ 10 октября 2018

Я думаю, что мы должны проанализировать их отдельно, потому что формат не соответствует.Сначала мы анализируем те, которые имеют компонент даты, месяца и года.Те, которые возвращают NA, затем анализируются путем добавления в них "01".

new_x <- as.Date(x, "%d-%b-%y")

new_x[is.na(new_x)] <- as.Date(paste0("01-", x[is.na(new_x)]), "%d-%b-%y")

new_x

#[1] "2012-04-01" "2012-12-01" "2014-07-30" "2016-03-01" "2016-02-29" "2017-05-01"
#[7] "2014-11-20"

Подробнее о форматах можно узнать по ?strptime.

data

x <-factor(c("Apr-12", "Dec-12", "30-Jul-14", "Mar-16", "29-Feb-16",
            "May-17","20-Nov-14"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...