【发布时间】:2016-06-15 21:04:45
【问题描述】:
这是我的名为“stock”的数据表:
TickerID Date Open Close
A 1/1/2013 42.1 43.4
A 1/2/2013 43.4 42.3
A 1/3/2013 42.3 44.1
AA 1/1/2013 28.7 28.9
AA 1/2/2013 28.9 28.4
AA 1/3/2013 28.4 29.1
AAA 1/1/2013 61.1 62.1
AAA 1/2/2013 62.1 63.5
AAA 1/3/2013 63.5 64.4
如何添加允许每个 TickerID 显示明天的开盘和收盘值的列?当 TickerID 没有“下一个日期”时,我还需要有一个 NA 我希望它看起来像这样:
TickerID Date Open Close OpenTom CloseTom
A 1/1/2013 42.1 43.4 43.4 42.3
A 1/2/2013 43.4 42.3 42.3 44.1
A 1/3/2013 42.3 44.1 NA NA
AA 1/1/2013 28.7 28.9 28.9 28.9
AA 1/2/2013 28.9 28.4 28.4 29.1
AA 1/3/2013 28.4 29.1 NA NA
AAA 1/1/2013 61.1 62.1 62.1 63.5
AAA 1/2/2013 62.1 63.5 63.5 64.4
AAA 1/3/2013 63.5 64.4 NA NA
这是我正在尝试的代码:
for (i in 2:nrow(stock)){
if(stock[i,"TickerID"]==NYSE[i-1,"TickerID"]){
stock[i,"CloseTom"] <- stock[i+1,"Close"]
stock[i,"OpenTom"] <- stock[i+1,"Open"]
}
}
如何加快这段代码的速度,以便在 300,000 多行上使用它?
注意:我不需要检查下一行是否有下一个日期,我知道这是真的
【问题讨论】: