объединить yymmdd и значение часа в r - PullRequest
0 голосов
/ 08 января 2019

У меня есть необработанные данные, как это: (Оба столбца являются числовыми)

Date        Hour
20161107     0
20161107     1
20161107     2
20161108     8
20161108     13

Мне нужно объединить их и получить:

Datetime
07/11/2016 00:00
07/11/2016 01:00
07/11/2016 02:00
08/11/2016 08:00
08/11/2016 13:00

Я пытался преобразовать дату из числа в объект даты:

as.Date(data[["Date"]], "%Y%m%d")

Но он возвращает это:

Error in charToDate(x): character string is not in a standard unambiguous format

У кого-нибудь есть решение для этого? Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я предоставляю базовый способ, который использует paste0() для объединения Date и Hour вместе и преобразования объекта во временной класс. Кроме того, вы можете изменить формат объектов класса времени на format(). Примечание: Результат format() будет символ класс.

within(df, { time1 <- strptime(paste0(Date, Hour), "%Y%m%d%H")
             time2 <- format(time1, "%d/%m/%Y %H:%M") } )

#       Date Hour              time2                 time1
# 1 20161107    0   07/11/2016 00:00   2016-11-07 00:00:00
# 2 20161107    1   07/11/2016 01:00   2016-11-07 01:00:00
# 3 20161107    2   07/11/2016 02:00   2016-11-07 02:00:00
# 4 20161108    8   08/11/2016 08:00   2016-11-08 08:00:00
# 5 20161108   13   08/11/2016 13:00   2016-11-08 13:00:00
0 голосов
/ 08 января 2019

Я настоятельно советую использовать пакет lubridate, который облегчит вашу жизнь. Вам просто нужна функция ymd_h, которая аргументирует оба столбца в одной строке (например, с использованием paste0).

library(lubridate)

df$Datetime <- ymd_h(paste0(df$Date," ",df$Hour))

     Date Hour            Datetime
1 20161107    0 2016-11-07 00:00:00
2 20161107    1 2016-11-07 01:00:00
3 20161107    2 2016-11-07 02:00:00
4 20161108    8 2016-11-08 08:00:00
5 20161108   13 2016-11-08 13:00:00

Данные:

df <- read.table(text = "Date        Hour
                 20161107     0
                 20161107     1
                 20161107     2
                 20161108     8
                 20161108     13",header = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...