создать дату и время, объединив дату и час, используя dplyr и lubridate - PullRequest
1 голос
/ 09 июня 2019

Мои данные имеют переменную Flowday (дата) и переменную Interval (double), которая представляет час дня.Я использую dplyr и lubridate и пытаюсь объединить их для создания нового столбца datetime с указанием даты и часа (сначала мне нужно вычесть 1 из часа, потому что 24-й час не распознан).

Я посмотрел примеры смазки и попробовал другой синтаксис, но не нашел тот, который работает.

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

tiny_date

# A tibble: 7 x 3
  Element       Flowday    Interval
  <chr>         <date>        <dbl>
1 Sterlington 1 2019-03-21     1.00
2 Sterlington 1 2019-03-21     2.00
3 Sterlington 1 2019-03-21     3.00
4 Sterlington 1 2019-03-21     4.00
5 Sterlington 1 2019-03-21    22.0 
6 Sterlington 1 2019-03-21    23.0 
7 Sterlington 1 2019-03-21    24.0

mutate(tiny_date, newdate = Flowday +hours(Interval - 1))

Ошибка в mutate_impl (.data, точки): столбец newdate принадлежит неподдерживаемому классу POSIXlt

Я ожидал создать новое поле даты-временичто я могу использовать для отображения данных.Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 09 июня 2019

Использование ymd_h

library(dplyr)
library(lubridate)
mutate(tiny_date, newdate = ymd_h(paste(Flowday, Interval - 1)))
1 голос
/ 09 июня 2019

Вот базовый способ R сделать это, вставив Interval - 1 в Flowday и указав format.

as.POSIXct(paste(df$Flowday, df$Interval - 1), format = "%Y-%m-%d %H", tz = "GMT")

#[1] "2019-03-21 00:00:00 GMT" "2019-03-21 01:00:00 GMT" "2019-03-21 02:00:00 GMT"
#[4] "2019-03-21 03:00:00 GMT" "2019-03-21 21:00:00 GMT" "2019-03-21 22:00:00 GMT" 
#[7] "2019-03-21 23:00:00 GMT"
1 голос
/ 09 июня 2019

Не уверен, но вы могли бы сделать:

     df %>% 
  mutate(newdate=as.POSIXct(hours((Interval-1))+ ymd(Flowday))) 


      Element    Flowday Interval             newdate
1 Sterlington 2019-03-21        1 2019-03-21 00:00:00
2 Sterlington 2019-03-21        2 2019-03-21 01:00:00
3 Sterlington 2019-03-21        3 2019-03-21 02:00:00
4 Sterlington 2019-03-21        4 2019-03-21 03:00:00
5 Sterlington 2019-03-21       22 2019-03-21 21:00:00
6 Sterlington 2019-03-21       23 2019-03-21 22:00:00
7 Sterlington 2019-03-21       24 2019-03-21 23:00:00
...