2011-02-02 17 views
1

我试着用plm包进行R中的一些差异估计。正如标题中所述,我不知道如何将POSIX日期(如“2002-10-01”)转换为由plm时间索引理解的值。我想这意味着使用整数值?将POSIX datefield转换为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) 
+0

`index`应该是一个日期向量。目前你正在提供一个角色矢量。 – 2011-02-03 01:15:19

回答

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 
+0

不适用于每月POSIXlt日期。 – 2011-02-02 23:03:28

0

的PLM包的概述THA那朵部分的4.1节指出:

如以上观察到的, plm的当前版本 能够与 常规数据帧一起工作而无需任何 进一步转换,条件是 前两列中的个人和时间索引都在 中,例如所有 示例数据集但工资。如果这个 不是这种情况,一个索引可选 参数将不得不传递到 的估计和测试功能。

我的阅读意味着POSIXct日期应该可以正常工作。

+0

示例数据集所有体育年度日期...所有这些都是简单的整数值..我的问题不适用。如果你能指出我有每月数据的例子 - 那很好。 – 2011-02-02 23:04:40

相关问题