我希望创建 24 小时数据框,其中每个data.frame
包含每小时对产品的需求为 1 列,接下来的 8 列包含每小时温度。例如,data.frame
对于上午 8 点,data.frame
将包含上午 8 点的需求列,然后包含从最近一小时到过去 7 小时的温度八列。额外的复杂情况是,在早上 8 点之前的几个小时,即“凌晨 4 点”,我必须得到昨天的温度。我正撞在墙上,试图弄清楚如何使用apply
orplyr
或矢量化函数来做到这一点。
demand8AM Temp8AM Temp7AM Temp6AM...Temp1AM
Demand4AM Temp4AM Temp3AM Temp2AM Temp1AM Temp12AM Temp11pm(Lag) Temp10pm(Lag)
在我的代码中,小时是数字;1 是上午 12 点等。
这是我创建的一些简单代码,用于创建我正在处理的数据集。
#Creating some Fake Data
require(plyr)
# setting up some fake data
set.seed(31)
foo <- function(myHour, myDate){
rlnorm(1, meanlog=0,sdlog=1)*(myHour) + (150*myDate)
}
Hour <- 1:24
Day <-1:90
dates <-seq(as.Date("2012-01-01"), as.Date("2012-3-30"), by = "day")
myData <- expand.grid( Day, Hour)
names(myData) <- c("Date","Hour")
myData$Temperature <- apply(myData, 1, function(x) foo(x[2], x[1]))
myData$Date <-dates
myData$Demand <-(rnorm(1,mean = 0, sd=1)+.75*myData$Temperature )
## ok, done with the fake data generation.