如何使用 R 中的 DBI 将年月日期时间合并到单个日期时间列中?

How do I combine year month date time into a single datetime column using DBI in R?

这是我的源数据 csv、df 的示例:

    Year             : int  2005 2005 2005 2005 2005 2005 2005 2005 2005 2005 ...
    Month            : int  1 1 1 1 1 1 1 1 1 1 ...
    DayofMonth       : int  28 29 30 31 2 3 4 5 6 7 ...
    Time             : int  1605 1605 1610 1605 1900 1900 1900 1900 1900 1900

如何使用 SQLite 而不是 dplyr 将 4 列组合成一个单独的列到我的数据库中的日期时间列?

我希望输出类似于:2005-01-29 09:30:00 这样我就可以绘制图表了。

我希望我的问题有意义。

你可以使用 lubridate::make_datetime:

Year =c(2005, 2005, 2005)
Month = c(1,2,3) 
DayofMonth = c(  28, 28, 30)
Time = c(1605, 1605, 1610)


lubridate::make_datetime(Year,Month,DayofMonth,floor(Time/100),Time%%100)

[1] "2005-01-28 16:05:00 UTC" "2005-02-28 16:05:00 UTC" "2005-03-30 16:10:00 UTC"

Base R,使用 Waldi 的示例数据(感谢!):

with(df, as.POSIXct(sprintf("%i-%02i-%i %02i:%02i:00", 
  Year, Month, DayofMonth, Time %/% 100, Time %% 100))
)
# [1] "2005-01-28 16:05:00 EST" "2005-02-28 16:05:00 EST" "2005-03-30 16:10:00 EST"

这(可能是天真地)假设您从来没有秒或小数分钟或 Time 不“有意义”的值(即超过 59 分钟,超过 23 小时)。


数据

df <- structure(list(Year = c(2005, 2005, 2005), Month = c(1, 2, 3), DayofMonth = c(28, 28, 30), Time = c(1605, 1605, 1610)), class = "data.frame", row.names = c(NA, -3L))