Извините, я знаю, что этот вопрос задавали тысячу раз, но я пытаюсь преобразовать свой столбец дат, который является фактором, на сегодняшний день, но он получает 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 …
Любое предложение будет высоко оценено, спасибо.
Как вы хотите, чтобы ваши свидания выглядели?
Ваш формат даты, очевидно, "%Y-%m-%d"
. Почему ты ставишь "-1"
впереди?
Ваши даты выглядят так, как будто они в формате год-месяц-день по умолчанию. Наверное f$ï..date <- as.Date(df$ï..date)
это все, что вам нужно.
Здесь есть несколько проблем:
отображаемые даты не соответствуют формату отображаемой строки формата. Они представлены в формате гггг-мм-дд (или в виде процентных кодов %Y-%m-%d
), который используется по умолчанию, поэтому нет необходимости указывать какой-либо формат вообще.
даты уже имеют год, месяц и день, поэтому нет необходимости что-либо вставлять в них
as.Date
имеет факторный метод. Нет необходимости преобразовывать их в символы.
Попробуй это:
x <- factor(c("2017-03-15","2017-03-16"))
as.Date(x)
## [1] "2017-03-15" "2017-03-16"
Вы получаете 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"
Почему у вас там часть
paste("-1",...
?