24 時間ごとのデータ フレームを作成したいと考えています。各データ フレームにはdata.frame
、1 列として製品の 1 時間ごとの需要が含まれ、次の 8 列には 1 時間ごとの気温が含まれています。たとえば、data.frame
午前 8 時のの場合、 には午前data.frame
8 時の需要の列が含まれ、最新の時間から過去 7 時間までの範囲の温度の列が 8 つ含まれます。さらに複雑なのは、午前 8 時より前の数時間、つまり「午前 4 時」に、昨日の気温を取得する必要があることです。apply
またはplyr
、またはベクトル化された関数を使用してこれを行う方法を理解しようとして、頭を壁にぶつけています。
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.