Как перевести коэффициент в дату в R без получения NA? - PullRequest
1 голос
/ 29 мая 2019

Извините, я знаю, что этот вопрос задавался тысячу раз, но я пытаюсь преобразовать свой столбец дат, который имеет отношение к фактору, но получает NA !!

Вот мои данные:

     'data.frame':  397774 obs. of  6 variables:
     $ ï..date      : Factor w/ 744 levels "2017-03-15","2017-03-16",..: 113 311 118 109 70 102 9 310 8 172 ...
     $ store        : int  43 43 43 43 43 43 43 43 43 43 ...
     $ item         : int  43 295 296 295 43 43 43 296 296 43 ...
     $ qty          : int  61 73 145 255 267 242 200 121 48 182 ...
     $ unit_price   : num  10.1 13.3 11.9 13.3 10.1 ...
     $ item_category: int  13 13 13 13 13 13 13 13 13 13 …

Вот мой код:

     df$ï..date <- as.Date(
     paste0("-1",as.character(df$ï..date)), 
     format = "%b-%y-%d")

Вот что я получаю:

  'data.frame': 397774 obs. of  6 variables:
  $ ï..date      : Date, format: NA NA NA ...
  $ store        : int  43 43 43 43 43 43 43 43 43 43 ...
  $ item         : int  43 295 296 295 43 43 43 296 296 43 ...
  $ qty          : int  61 73 145 255 267 242 200 121 48 182 ...
  $ unit_price   : num  10.1 13.3 11.9 13.3 10.1 ...
  $ item_category: int  13 13 13 13 13 13 13 13 13 13 …

Любое предложение будет высоко ценится, спасибо.

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

Здесь есть несколько проблем:

  • показанные даты не в формате указанной строки формата. Они имеют формат yyyy-mm-dd (или в виде процентных кодов %Y-%m-%d), который является значением по умолчанию, поэтому нет необходимости указывать какой-либо формат вообще

  • у дат уже есть год, месяц и день, поэтому нет необходимости что-либо наклеивать на них

  • as.Date имеет факторный метод. Нет необходимости конвертировать их в символы.

Попробуйте это:

x <- factor(c("2017-03-15","2017-03-16"))
as.Date(x)
## [1] "2017-03-15" "2017-03-16"
1 голос
/ 29 мая 2019

Вы получаете NA, потому что ваш формат неправильный

> as.Date("2017-03-15", format = "%b-%y-%d")
[1] NA

%Y представляет год, %m месяц и %d день.

> as.Date("2017-03-15", format = "%Y-%m-%d")
[1] "2017-03-15"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...