我一直在与zoo
合作,为我的时间序列数据利用滞后和差分。我没有使用由公司和日期组成的面板数据集。单独滞后每个公司然后合并结果变得非常麻烦。 R中是否有适用于面板数据的优质软件包?我目前知道plm
。其他? plm
有一个奇怪的问题,即lag
顺序(即-1 vs +1)与zoo
和ts
完全相反,因此我预见到了前方的麻烦。有人喜欢的任何套餐吗?
答案 0 :(得分:1)
ddply
包中的plyr
函数,
通常使这种操作无痛
(但在大型数据集上可能会很慢)。
# Sample data
library(quantmod)
d <- NULL
for(s in c("^GSPC","^N225")) {
tmp <- getSymbols(s,auto.assign=FALSE)
tmp <- Ad(tmp)
names(tmp) <- "price"
tmp <- data.frame( date=index(tmp), id=s, price=coredata(tmp) )
d[[s]] <- tmp
}
d <- do.call(rbind, d)
rownames(d) <- NULL
# Sample computations: lag the prices and compute the logarithmic returns
library(plyr)
d <- ddply(
d, "id",
mutate,
previous_price = lag(xts(price,date)),
log_return = log(price / previous_price)
)