2016-11-05 2 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 

을 그리고 당신이 추구하는 dataframes 각각의 목록은 국가의 경우, 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 
관련 문제