R 产生滞后
我希望这是基本的;只需要朝正确的方向轻推一下 我已使用RODBC将MS Access中的数据库表读入数据帧。以下是我所读内容的基本结构:R 产生滞后,r,R,我希望这是基本的;只需要朝正确的方向轻推一下 我已使用RODBC将MS Access中的数据库表读入数据帧。以下是我所读内容的基本结构: PRODID PROD Year Week QTY SALES INVOICE 结构如下: str(data) 'data.frame': 8270 obs. of 7 variables: $ PRODID : int 20001 20001 20001 100001 100001 100001 100001 100001 100001 10000
PRODID PROD Year Week QTY SALES INVOICE
结构如下:
str(data)
'data.frame': 8270 obs. of 7 variables:
$ PRODID : int 20001 20001 20001 100001 100001 100001 100001 100001 100001 100001 ...
$ PROD : Factor w/ 1239 levels "1% 20qt Box",..: 335 335 335 128 128 128 128 128 128 128 ...
$ Year : int 2010 2010 2010 2009 2009 2009 2009 2009 2009 2010 ...
$ Week : int 12 18 19 14 15 16 17 18 19 9 ...
$ QTY : num 1 1 0 135 300 270 300 270 315 315 ...
$ SALES : num 15.5 0 -13.9 243 540 ...
$ INVOICES: num 1 1 2 5 11 11 10 11 11 12 ...
下面是最上面的几行:
head(data, n=10)
PRODID PROD Year Week QTY SALES INVOICES
1 20001 Dolie 12" 2010 12 1 15.46 1
2 20001 Dolie 12" 2010 18 1 0.00 1
3 20001 Dolie 12" 2010 19 0 -13.88 2
4 100001 Cage Free Eggs 2009 14 135 243.00 5
5 100001 Cage Free Eggs 2009 15 300 540.00 11
6 100001 Cage Free Eggs 2009 16 270 486.00 11
7 100001 Cage Free Eggs 2009 17 300 540.00 10
8 100001 Cage Free Eggs 2009 18 270 486.00 11
9 100001 Cage Free Eggs 2009 19 315 567.00 11
10 100001 Cage Free Eggs 2010 9 315 569.25 12
我只是想为每个产品的数量、销售额和发票生成滞后,但我不确定从何处开始。我知道R对时间序列很好,但我不知道从哪里开始
我有两个问题:
简而言之,我想循环一组记录,计算产品的滞后时间(如果可能的话),将滞后时间(因为它们适用)附加到每个产品的当前记录中,然后将结果写回数据库中的一个表中,供我的报告软件使用。很可能有一种更优雅的方法可以做到这一点 首先读入数据:
h <- 'row PRODID PROD Year Week QTY SALES INVOICES
1 20001 Dolie12 2010 12 1 15.46 1
2 20001 Dolie12 2010 18 1 0.00 1
3 20001 Dolie12 2010 19 0 -13.88 2
4 100001 CageFreeEggs 2009 14 135 243.00 5
5 100001 CageFreeEggs 2009 15 300 540.00 11
6 100001 CageFreeEggs 2009 16 270 486.00 11
7 100001 CageFreeEggs 2009 17 300 540.00 10
8 100001 CageFreeEggs 2009 18 270 486.00 11
9 100001 CageFreeEggs 2009 19 315 567.00 11
10 100001 CageFreeEggs 2010 9 315 569.25 12'
dat <- read.table(textConnection(h),T)
可以对单个变量使用PERregress库中的back()函数。您还可以创建多个滞后。我通常在回归分析中使用此函数进行自相关 你介意解释一下代码中的步骤吗:new_vars
new_vars <-do.call(rbind,rev(by(dat[,c(6,7,8)],dat$PROD,function(x) rbind(NA,x[-nrow(x),]))))
> cbind(dat,new_vars)
row PRODID PROD Year Week QTY SALES INVOICES QTY SALES INVOICES
Dolie12.1 1 20001 Dolie12 2010 12 1 15.46 1 NA NA NA
Dolie12.2 2 20001 Dolie12 2010 18 1 0.00 1 1 15.46 1
Dolie12.3 3 20001 Dolie12 2010 19 0 -13.88 2 1 0.00 1
CageFreeEggs.1 4 100001 CageFreeEggs 2009 14 135 243.00 5 NA NA NA
CageFreeEggs.4 5 100001 CageFreeEggs 2009 15 300 540.00 11 135 243.00 5
CageFreeEggs.5 6 100001 CageFreeEggs 2009 16 270 486.00 11 300 540.00 11
CageFreeEggs.6 7 100001 CageFreeEggs 2009 17 300 540.00 10 270 486.00 11
CageFreeEggs.7 8 100001 CageFreeEggs 2009 18 270 486.00 11 300 540.00 10
CageFreeEggs.8 9 100001 CageFreeEggs 2009 19 315 567.00 11 270 486.00 11
CageFreeEggs.9 10 100001 CageFreeEggs 2010 9 315 569.25 12 315 567.00 11