Подтвердить что ты не робот

R помогает преобразовать коэффициент на сегодняшний день

Я импортировал файл csv с датами из SQL-запроса, но даты - это действительно значения даты и времени, и R, похоже, не распознает их как даты. Как преобразовать их в даты? (Мне не нужно включать временную часть.)

> mydate
[1] 1/15/2006 0:00:00
2373 Levels: 1/1/2006 0:00:00 1/1/2007 0:00:00 1/1/2008 0:00:00 ... 9/9/2012 0:00:00
> class(mydate)
[1] "factor"
> as.Date(mydate)
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

Как мне преобразовать mydate в дату?

4b9b3361

Ответ 1

Ты был близок. format= необходимо добавить в вызов as.Date:

mydate <- factor("1/15/2006 0:00:00")
as.Date(mydate, format = "%m/%d/%Y")
## [1] "2006-01-15"

Ответ 2

Вы можете попробовать пакет lubridate, который значительно облегчит жизнь.

library(lubridate)

mdy_hms(mydate)

Вышеуказанное изменит формат даты на POSIXct

Пример рабочего примера:

> data <- "1/15/2006 01:15:00"
> library(lubridate)
> mydate <- mdy_hms(data)
> mydate
[1] "2006-01-15 01:15:00 UTC"
> class(mydate)
[1] "POSIXct" "POSIXt" 

Для случая с фактором используйте as.character

data <- factor("1/15/2006 01:15:00")
library(lubridate)
mydate <- mdy_hms(as.character(data))

Ответ 3

Взгляните на форматы в ?strptime

R> foo <-  factor("1/15/2006 0:00:00")
R> foo <- as.Date(foo, format = "%m/%d/%Y %H:%M:%S")                                           
R> foo                                                                                       
 [1] "2006-01-15"                                                                             
R> class(foo)                                                                                
 [1] "Date"  

Обратите внимание, что это будет работать, даже если foo начинается как символ. Он также будет работать, если используется другой формат даты (as.POSIXlt, as.POSIXct).