如何滞后R中的行号

时间:2013-08-13 05:39:59

标签: r lag

我有三列,在第四列中我想要第三列的滞后。如何在R

中做到这一点

例如

uid       timestamp    operation
 1         24-04-12    logged-in
 2         25-06-13    view content
 1         31-05-10    delete

但我想像在SAS中那样使用滞后函数,并希望输出如下

uid        timestamp    operation     lag
 1         24-04-12     logged-in      
 2         25-06-13     view content  logged-in
 3         31-05-10     delete        view content

我有使用zoo包的滞后函数,但它没有发生,如何在R ?? 任何指导都将非常感谢。

1 个答案:

答案 0 :(得分:1)

使用特定于zoo包的功能(例如?lag.zoo)时,您需要确保您操作的数据是zoo对象:

operation <- c("logged-in","view current", "delete")
lag(zoo(operation),-1,na.pad=TRUE)
#         1            2            3 
#      <NA>    logged-in view current 

lag(zoo(operation),1,na.pad=TRUE)
#           1            2            3 
#view current       delete         <NA> 

否则,使用基数R,head(和tail)可以帮助您:

# match the 1 and -1 to how big you want your lag:
c(rep(NA,1),head(operation,-1))
#[1] NA             "logged-in"    "view current"

c(tail(operation,-1),rep(NA,1))
#[1] "view current" "delete"       NA