使用r的多列滞后

lag of multiple column using r

我有一个这样的数据框

    MSFT     AAPL     GOOGL
1 21.11067 4.975767  94.04000
2 20.91273 5.663524  97.50684
3 20.05333 5.681336  90.57909

想要创建一个像

这样的先前数据滞后的文件
   MSFT     AAPL     GOOGL
1 20.91273 5.663524  97.50684
2 20.05333 5.681336  90.57909
3 20.09447 5.239416  99.60738

尝试使用此代码解决问题

Lagcolmean <- lapply(names(colmean), function(x){lag(colmean[[x]],k=1)
})

但它不起作用。你能在这方面帮助我吗?

1) indexing lag 通常与时间序列一起使用,例如 "ts""zoo""xts" 对象。对于数据框,只需删除第一行:

DF[-1, ]

2) rollapplyr 如果你想在问题的代码中使用 rollapply 那么试试这个:

rollapplyr(DF, 2, function(x) x[2])

或等同于:

rollapplyr(DF, 2, "[", 2)

3) dplyr 或者,dplyr 包确实定义了一个 leadlag 来处理数据帧:

library(dplyr)
DF %>% mutate_all(lead)