Каков наилучший способ превратить поле даты POSIX в некоторый временной индекс, принятый plm? - PullRequest
1 голос
/ 03 февраля 2011

Я пробовал пакет 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) 

Ответы [ 2 ]

0 голосов
/ 03 февраля 2011

В разделе 4.1 Обзора эта часть пакета plm гласит:

Как отмечено выше, текущая версия PLM способен работать с обычный data.frame без каких-либо дальнейшее преобразование при условии, что индивидуальные и временные индексы находятся в первые два столбца, как и во всех примеры наборов данных, кроме заработной платы. Если это не так, индекс необязательный аргумент должен быть передан функции оценки и тестирования.

На мой взгляд, это означает, что даты POSIXct должны работать нормально.

0 голосов
/ 03 февраля 2011

Вы можете превратить его в целочисленное значение с помощью 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...