Как создать объект datetime из отдельных полей даты? - PullRequest
6 голосов
/ 24 января 2012

У меня есть такой набор данных:

    Year MM DD HH
158 2010  7  1  5
159 2010  7  1  5
160 2010  7  1  6
161 2010  7  1  6

structure(list(Year = c(2010L, 2010L, 2010L, 2010L), MM = c(7L, 
7L, 7L, 7L), DD = c(1L, 1L, 1L, 1L), HH = c(5L, 5L, 6L, 6L)), .Names = c("Year", 
"MM", "DD", "HH"), row.names = 158:161, class = "data.frame")

Как я могу создать один объект даты-времени из этого набора данных (новый столбец для этих данных)?

Ответы [ 3 ]

9 голосов
/ 24 января 2012

Есть несколько вариантов, вот один (где x - ваш data.frame):

x$datetime <- ISOdatetime(x$Year, x$MM, x$DD, x$HH, 0, 0)

При необходимости вы можете указать правильный часовой пояс, см. ?ISOdatetime.

2 голосов
/ 05 ноября 2017

Теперь вы можете сделать это в lubridate , используя make_date или make_datetime:

Из документа крана:

make_datetime(year = 1970L, month = 1L, day = 1L, hour = 0L, min = 0L,
sec = 0, tz = "UTC")

make_date(year = 1970L, month = 1L, day = 1L)
2 голосов
/ 24 января 2012

Предполагается, что у вас есть данные в кадре данных x:

transform(x,datetime = as.POSIXct(paste(paste(Year,MM,DD,sep="-"), paste(HH,"00",sep=":"))))
    Year MM DD HH            datetime
158 2010  7  1  5 2010-07-01 05:00:00
159 2010  7  1  5 2010-07-01 05:00:00
160 2010  7  1  6 2010-07-01 06:00:00
161 2010  7  1  6 2010-07-01 06:00:00
...