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

时间:2015-10-14 12:53:53

标签: r join 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 - 向量并将其转换为posixct框架,并使用匹配的每日值。

我看起来很高又低但却找不到任何东西。

1 个答案:

答案 0 :(得分:1)

我这样做的方法是找到数据集的最小值和最大值,并将它们视为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。