我有一个关于根据时间因素创建滞后变量的问题。
基本上我正在使用一个棒球数据集,其中在 2002-2012 年间每个球员都有很多名字。显然,我只希望同一个人的滞后变量尝试创建职业弧线来预测当前统计数据。例如,我想使用 lag 1 Average (2003) , lag 2 Average (2004) 来尝试预测 2005 年的当前平均值。所以我尝试编写一个遍历每一行的循环(数据帧已经按name 然后是年份,所以上一年是 n-1 行),检查名称是否相同,如果是,则从上一行中获取值。
这是我的循环:
i=2 #as 1 errors out with 1-0 row
for(i in 2:6264){
if(TS$name[i]==TS$name[i-1]){
TS$runvalueL1[i]=TS$Run_Value[i-1]
}else{
TS$runvalueL1 <- NA
}
i=i+1
}
因为每一行都取决于名称,所以我不能使用大多数滞后函数。如果你有更好的主意,我会全力以赴!
示例数据无济于事,但这里有一些:
编辑:样本数据没有产生可用的结果,所以我只附上了我数据集的前 10 个人。谢谢!
TS[(6:10),c('name','Season','Run_Value')]
name Season ARuns
321 Abad Andy 2003 -1.05
3158 Abercrombie Reggie 2006 27.42
1312 Abercrombie Reggie 2007 7.65
1069 Abercrombie Reggie 2008 5.34
4614 Abernathy Brent 2002 46.71
707 Abernathy Brent 2003 -2.29
1297 Abernathy Brent 2005 5.59
6024 Abreu Bobby 2002 102.89
6087 Abreu Bobby 2003 113.23
6177 Abreu Bobby 2004 128.60
谢谢!