我的数据有一个Flowday变量(一个日期)和一个Interval变量(双精度),它们代表一天中的小时。我正在使用dplyr
和lubridate
并试图将它们结合起来以创建一个带有两个datend小时的新datetime列(首先,我需要从小时中减去1,因为无法识别24小时)。
我看过lubridate示例,并尝试了不同的语法,但没有找到一种可行的方法。
以下是数据和代码:
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
我希望创建一个新的日期时间字段,以用于图形化数据。感谢您的帮助。
答案 0 :(得分:2)
使用ymd_h
library(dplyr)
library(lubridate)
mutate(tiny_date, newdate = ymd_h(paste(Flowday, Interval - 1)))
答案 1 :(得分:1)
不确定,但您可以这样做:
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
答案 2 :(得分:1)
这是将Interval - 1
粘贴到Flowday
并指定format
的基本R方法。
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"