2016-11-05 19 views
-3

今、私は3カ国の時系列GDPデータを持っています。さらなるパネル分析のために、データセット用のパネルを作成したいと思います。私はそれを作成する方法を理解していないwhithは、plmパッケージを再構成します。私は、このような方法でデータを再形成できることを発見しました時系列をrに変更パネル

  AT  CZ  DE 
1995 68410.7 30457.3 630631.5 
1995.25 68353.5 30213.1 625515.3 
1995.5 68103.3 29766.4 623124.0 
1995.75 67896.0 29661.8 621122.0 
1996 67888.8 29595.8 616673.1 
1996.25 67874.5 29880.0 616645.4 

long <- reshape(as.data.frame(GDP.series),varying = list(names(GDP.series)), v.names="GDP", 
      timevar = "Country", idvar = "time", ids = row.names(GDP.series), 
      times = names(GDP.series), new.row.names = 1:((dim(GDP.series)[2])*(dim(GDP.series)[1])),direction = "long") 

、そのデータの後には次のようになりますしている:

Country  GDP 
1  AT 49149.0 
2  AT 49555.5 
3  AT 49475.9 
4  AT 49507.6 
5  AT 49888.9 
6  AT 50324.5 

しかし、この変換の問題はあります期間に関する情報が失われていること。私は背後にあるコードのすべてが、特にこの部分は私のためにunderstableはかなり初心者だし、ない:

"new.row.names = 1:((dim(GDP.series)[2])*(dim(GDP.series)[1])),direction = "long"" 

データ形式を以下している場合に、だから私の質問は、改善する方法/変更コード知っている:

 Country  GDP 
2013  AT 49149.0 
2012.75 AT 49555.5 
2012.5  AT 49475.9 
2012.25 AT 49507.6 
2011  AT 49888.9 
2011.75 AT 50324.5 

他の機能を使用する必要がある場合は、前もって感謝します。 (コードはこのトピックから取られます:Data Transformation in R for Panel Regression

+0

ねえSOへようこそ!あなたはあなたの最後から試して、中間結果を共有することができますか?私たちはあなたを助けたいと思います!すべてゼロから行うことを期待しないでください! –

+0

ご意見ありがとうございます、私は私の質問を更新しました。 – xenie

+0

データセットのパネル?あなたは精緻化できますか?出力をどのようにしたいかを共有しますか? –

答えて

0

これはあなたの答えです!しかし、データフレームのrownamesは一意でなければならないので、それを持つことはできません。私の出力を確認してください。

data = data.frame(AT = 1:6,CZ = 11:16,DE = 21:26) 
rownames(data) = c(2013,2012.75, 2012.5 ,2012.25 ,2011,2011.75) 
data$row = rownames(data) 

library(reshape2) 
data1 = melt(data, id.vars = "row", measure.vars = c("AT","CZ","DE"), 
    value.name = "GDP", variable.name = "Country") 
data1 
     row Country GDP 
1  2013  AT 1 
2 2012.75  AT 2 
3 2012.5  AT 3 
4 2012.25  AT 4 
5  2011  AT 5 
6 2011.75  AT 6 
7  2013  CZ 11 
8 2012.75  CZ 12 
9 2012.5  CZ 13 
10 2012.25  CZ 14 
11 2011  CZ 15 
12 2011.75  CZ 16 
13 2013  DE 21 
14 2012.75  DE 22 
15 2012.5  DE 23 
16 2012.25  DE 24 
17 2011  DE 25 
18 2011.75  DE 26 

そして何を求めては、その後)(dlply使用国のためのデータフレーム毎のリストである場合:

library(plyr) 
dlply(data1, .(Country), function(x) {rownames(x) = x$row;x$row = NULL;x}) 

$AT 
     Country GDP 
2013   AT 1 
2012.75  AT 2 
2012.5  AT 3 
2012.25  AT 4 
2011   AT 5 
2011.75  AT 6 

$CZ 
     Country GDP 
2013   CZ 11 
2012.75  CZ 12 
2012.5  CZ 13 
2012.25  CZ 14 
2011   CZ 15 
2011.75  CZ 16 

$DE 
     Country GDP 
2013   DE 21 
2012.75  DE 22 
2012.5  DE 23 
2012.25  DE 24 
2011   DE 25 
2011.75  DE 26