将每日(日期)格式转换为每小时(posixct)

Convert daily (date) format to hourly (posixct)

我有一个包含每日数据的数据框。我需要将它绑定到每小时数据,但首先我需要将它转换为合适的 posixct 格式。这看起来像这样:

set.seed(42)

df <- data.frame(
  Date = seq.Date(from = as.Date("2015-01-01", "%Y-%m-%d"), to = as.Date("2015-01-29", "%Y-%m-%d"), by = "day"),
  var1 = runif(29, min = 5, max = 10)
)

result <- data.frame(
  Date = d <- seq.POSIXt(from = as.POSIXct("2015-01-01 00:00:00", "%Y-%m-%d %H:%M:%S", tz = ""), 
                         to = as.POSIXct("2015-01-29 23:00:00", "%Y-%m-%d %H:%M:%S", tz = ""), by = "hour"),
  var1 =  rep(df$var1, each = 24) )

但是,我的数据不像上面那样容易处理。我有很多缺失的日期,所以我需要能够获取特定的 df$Date-vector 并将其转换为 posixct 框架,并具有匹配的每日值。

我四处寻找,却找不到任何相关信息。

我解决这个问题的方法是找到数据集的最小值和最大值,并将它们视为第 0 小时和第 23 小时。

hourly <- data.frame(Hourly=seq(min(as.POSIXct(paste0(df$Date, "00:00:00"),tz="")),max(as.POSIXct(paste0(df$Date, "23:00:00"),tz="")),by="hour"))
hourly[,"Var1"] <- df[match(x = as.Date(hourly$Hourly),df$Date),"var1"]

这实现了每日值变为每小时的结果,每日 var1 分配给包含一天的每个小时。在这方面,缺少每日值应该不是问题,如果没有匹配,它将添加 NA。