2011-02-02 6 views
1

私はRの最初の違いを見積もるためにplmパッケージを試しています。タイトルに述べたように、私はPOSIXの日付を "2002-10-01"のようにplmの時間インデックスで理解できる値にすることができますか?これは整数値を使うことを意味するのでしょうか?POSIXの日付フィールドを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'は日付のベクトルでなければなりません。現時点では、文字ベクトルを提供しています。 –

答えて

0

あなたはunclassで整数値に変換することができます:ここでは

は、私がこれまで試したものです。

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

この数値を86400で割った場合、1970-1-1からの日数が得られます。

plmパッケージでは、インデックス以外の目的でtime変数は使用されないため、ここでは整数値が必要です。

EDIT:それをフォーマットすると、その後の変換について

方法:PLMパッケージの概要股関節TIS部の

> x <- as.POSIXlt("2011-02-02") 
> x 
[1] "2011-02-02" 
> as.integer(format(x, "%Y%m%d")) 
[1] 20110202 
+0

毎月のPOSIXlt日付ではうまくいきません。 –

0

セクション4.1は言う:

以上観察されたように、現在のバージョン のplmは regular data.frameと一緒に作業することはできません。さらに の変換はありません。ただし、 個別および時間インデックスは のすべての例のデータセットのように、最初の2つの列の にあります。この が当てはまらない場合は、推定オプションと評価関数 にオプションのインデックス を渡す必要があります。

これは、POSIXctの日付が正常に動作することを意味しています。

+0

例のデータセットはすべて年次のスポーツです...それらはすべて簡単な整数値です。私の問題は適用されません。あなたが毎月のデータを使って私に例を示すことができれば、それはうまくいくでしょう。 –

+0

POSIXctはPOSIXltと比較して違いがあるようですが、それでも私は二重のカップル(time-id)を取得します pdim.default(index [[1]]、index [[2]]のエラー)本当に重複がある場合。 –

+0

個人インデックスと時間インデックスが最初の2つの列にある場合は、明示的に指定する必要はありません。それ以外の場合は、毎回tapplyの(ラッパー関数)に投げ込んでから、コードで時間の書式を処理しないでください。 – eyjo

関連する問題