1

我尝试使用 plm 包在 R 中进行一些第一次差异估计。如标题中所述,我想知道如何将我的 POSIX 日期(如“2002-10-01”)转换为 plm 时间索引可以理解的值。我猜这意味着使用整数值?

这是我到目前为止所尝试的:

panel.fd <- plm(y~X,index=c("datefield","id"),model="fd",data=z)
# returns
Error in pdim.default(index[[1]], index[[2]]) :
# when I convert my datefield to a factor, I get the same error...
z$t_idx <-as.factor(z$datefield) 
4

2 回答 2

0

作为 plm 包的一部分的概述的第 4.1 节说:

如上所述,当前版本的 plm 能够使用常规 data.frame 而无需任何进一步的转换,前提是个人和时间索引位于前两列中,就像除了工资之外的所有示例数据集一样。如果不是这种情况,则必须将索引可选参数传递给估计和测试函数。

在我看来,这意味着 POSIXct 日期应该可以正常工作。

于 2011-02-02T22:51:44.490 回答
0

您可以使用 将其转换为整数值unclass

> unclass(Sys.time())
[1] 1296686673

如果将该数字除以 86400,您将得到自 1970-1-1 以来的天数。

plm 包除了索引目的之外没有使用时间变量,所以你在这里只需要一个整数值是对的。

编辑:

如何格式化它然后转换:

> x <- as.POSIXlt("2011-02-02")
> x
[1] "2011-02-02"
> as.integer(format(x, "%Y%m%d"))
[1] 20110202
于 2011-02-02T22:48:39.100 回答