2014-02-05 2 views
1

IMF IFS의 시계열 데이터를 분기 별 시계열 데이터 형식으로 제공합니다.시계열 데이터를 R 형태로 재구성 R

지금 당장 행은 국가 별 변수이며 열은 시간이므로 다음과 같습니다.

 country variable Q1 Q2 
[1,] "USA" "inflation" "1" "5" 
[2,] "USA" "GDPPC"  "2" "6" 
[3,] "UK" "inflation" "3" "7" 
[4,] "UK" "GDPPC"  "4" "8" 

나는 긴 형태로 그것을 얻을 필요가 : 나는 ID 변수와 측정 변수는 모두 행에있을 때 고쳐 사용하는 방법에 대한 조언을 찾을 수 없어

country Time inflation GDPPC 
[1,] "USA" "Q1" "1"   "2" 
[2,] "USA" "Q2" "5"   "6" 
[3,] "UK" "Q1" "3"   "4" 
[4,] "UK" "Q2" "7"   "8" 

.

답변

1

그것은 reshape2 패키지의 dcast 다음 부분 melt이다

d = data.table(country = c("USA","USA","UK","UK"), variable = c("inflation","GDPPC","inflation","GDPPC"),Q1=as.character(1:4),Q2=as.character(5:8)) 
require(reshape2) 
d2 = melt(d, id=c("country", "variable")) 
colnames(d2)[3] = "Time" 
rr=dcast(d2, country +Time ~ variable) 
rr = rr[order(rr$country,decreasing=T),c(1:2,4,3)] 

준다 :

> rr 
    country Time inflation GDPPC 
3  USA Q1   1  2 
4  USA Q2   5  6 
1  UK Q1   3  4 
2  UK Q2   7  8 
0

베이스 R 방법 data.frame

d <- data.frame(country = c("USA","USA","UK","UK"), variable = c("inflation","GDPPC","inflation","GDPPC"),Q1=1:4,Q2=5:8) 
아래 사용 stackreshape를 사용

거리를 바꿉니다 :

intm <- data.frame(d[,c("country","variable")],stack(d[,c("Q1","Q2")])) 
reshape(intm, idvar=c("country","ind"), timevar="variable", direction="wide") 

# country ind values.inflation values.GDPPC 
#1  USA Q1    1   2 
#3  UK Q1    3   4 
#5  USA Q2    5   6 
#7  UK Q2    7   8