2013-08-30 2 views
3

는 이제 데이터는 다음과 같이 설정 한 : 나는 일부를 사용하고 재구성 데이터

gdp<-subset(x,index=="GDP")# subset by index 
> gdp 
    country index  value 
1  AUS GDP 0.8004142 
4  HUN GDP 0.3520509 
7  USA GDP 0.6431452 
names(gdp)[3]<-"GDP" # rename 'value' to 'GDP' 
gdp<-gdp[c(-2)] 
gni<-subset(x,index=="GNI") 
names(gni)[3]<-"GNI" 
gni<-gni[c(-2)] 
cpi<-subset(x,index=="CPI") 
names(cpi)[3]<-"CPI" 
cpi<-cpi[c(-2)] 
total<-merge(gdp, gni, by="country") 
total1<-merge(total, cpi, by="country") 
> total1 
    country  GDP  GNI  CPI 
1  AUS 0.8004142 0.8251010 0.6675700 
2  HUN 0.3520509 0.4821505 0.3623341 
3  USA 0.6431452 0.9119910 0.6616684 

을 다음과 같이 데이터를 재구성 명령을 병합 한 후

country index  value 
1  AUS GPD 0.8004142 
2  AUS GNI 0.8251010 
3  AUS CPI 0.6675700 
4  HUN GPD 0.3520509 
5  HUN GNI 0.4821505 
6  HUN CPI 0.3623341 
7  USA GPD 0.6431452 
8  USA GNI 0.9119910 
9  USA CPI 0.6616684 

나는 쉽게 찾고 있어요 이런 식으로 데이터를 재구성하는 방법. 몇 가지 제안 (샘플 코드)을 제공하십시오. 어떤 도움이라도 대단히 감사합니다.

+1

+1 좋은 노력! – zx8754

답변

2

이것은 매우 기본적인 "변형"질문입니다.

가장 직접적인 방법은 "reshape2"에서 dcast을 사용하는 것입니다

> library(reshape2) 
> dcast(mydf, country ~ index) 
    country  CPI  GNI  GPD 
1  AUS 0.6675700 0.8251010 0.8004142 
2  HUN 0.3623341 0.4821505 0.3520509 
3  USA 0.6616684 0.9119910 0.6431452 

또는 기본 R에, xtabs을있다. xtabsmatrix을 출력하므로 data.frame을 얻으려면 as.data.frame.matrix을 사용하십시오.

> as.data.frame.matrix(xtabs(value ~ country + index, mydf)) 
      CPI  GNI  GPD 
AUS 0.6675700 0.8251010 0.8004142 
HUN 0.3623341 0.4821505 0.3520509 
USA 0.6616684 0.9119910 0.6431452