使用R中的面板数据

时间:2012-11-02 17:53:32

标签: r data.table xts zoo

我想看看人们用R来处理具有大型数据集(即50 mil + obs)的面板数据:data.table包很有用,因为它有密钥并且非常快。 xts包非常有用,因为它具有执行各种时间序列的功能。因此,似乎有两个不错的选择:

  1. 拥有data.table并编写自定义时间序列函数来处理
  2. 有一个xts个对象列表,每次你想做某事时都会在该列表上运行lapply。最终需要将其合并到data.frame以进行回归等。
  3. 我知道plm包,但没有发现它对数据管理有用,就像上面的两个选项一样。你们用的是什么?什么时候最好的想法?

    让我提出一个场景:假设有N个公司有T​​个时间段,其中N> 0且T> 0。如果我想让每个公司滞后一段时间,data.table将超级快,例如:

    x <- data.table(id=1:10, dte=rep(seq(from=as.Date("2012-01-01"), to=as.Date("2012-01-10"), by="day"), each=10), val=1:100, key=c("id", "dte"))
    x[,lag_val:=c(NA, head(val, -1)),by=id]
    

    另一种方法可能是:

    y <- lapply(ids, function(i) {xts(x[id==i, val], order.by=x[id == i, dte])})
    y <- lapply(y, function(obj) { cbind(obj, lag(obj, 1)) })
    

    前者的优势在于它具有大数据的速度。后者的优点是能够执行period.apply之类的操作并使用xts的其他功能。有没有让xts表示更快的技巧?也许是两者的结合?看来,转换为xts对象的成本很高。

0 个答案:

没有答案