Каков наилучший способ превратить поле даты POSIX в некоторый временной индекс, принятый plm?

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

Вы можете превратить его в целочисленное значение с 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

Раздел 4.1 Обзора, который является частью пакета plm, гласит:

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

Насколько я понимаю, это означает, что даты POSIXct должны работать нормально.

Другие вопросы по тегам