我有三列,在第四列中我想要第三列的滞后。如何在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 ?? 任何指导都将非常感谢。
答案 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