【发布时间】:2012-02-13 04:19:35
【问题描述】:
我有一个类似的数据集
User Date Value
A 2012-01-01 4
A 2012-01-02 5
A 2012-01-03 6
A 2012-01-04 7
B 2012-01-01 2
B 2012-01-02 3
B 2012-01-03 4
B 2012-01-04 5
我想创建 Value 的滞后,尊重 User。
User Date Value Value.lag
A 2012-01-01 4 NA
A 2012-01-02 5 4
A 2012-01-03 6 5
A 2012-01-04 7 6
B 2012-01-01 2 NA
B 2012-01-02 3 2
B 2012-01-03 4 3
B 2012-01-04 5 4
我在一个循环中做的非常低效
df$value.lag1<-NA
levs<-levels(as.factor(df$User))
levs
for (i in 1:length(levs)) {
temper<- subset(df,User==as.numeric(levs[i]))
temper<- rbind(NA,temper[-nrow(temper),])
df$value.lag1[df$User==as.numeric(as.character(levs[i]))]<- temper
}
但这很慢。我看过使用by 和tapply,但不知道如何让它们工作。
我不认为 XTS 或 TS 会因为 User 元素而起作用。
有什么建议吗?
【问题讨论】:
-
我认为
plm包对这种类型的数据有一个实现。
标签: r time-series lag