2

国年形式の国レベルのデータに関する大規模なデータセットを使用しており、次の形式で表示されます (簡単にするために省略されています)。

Country     Variable of Interest  Year
Bolivia     5                     1990
Bolivia     6                     1991
Bolivia     7                     1992
Cambodia    8                     1990
Cambodia    9                     1991
Cambodia    10                    1992
Russia      11                    1990
Russia      12                    1991
Russia      13                    1992

同僚との共同作業のため、データをこのフォームに入れるにはどうすればよいですか?:

Country   1990    1991   1992
Bolivia    5        6     7
Cambodia   8        9     10
Russia     11       12    13

私はRバージョン2.15.2を使用しており、ライブラリWDIを使用して世界銀行に情報をポーリングしています。これまでのところ、単一の国で機能するコードを添付しています。次に、すべての国で実行しようとするときにコードを貼り付けます。どんな助けでも大歓迎です。ありがとう。

library(WDI)
x<-WDI(country="US",indicator="NY.GDP.MKTP.CD",start = 1980, end=2012)
a<-as.matrix(x$country)
b<-x$year
x<-as.data.frame(t(x))
colnames(x)<-b
x<-x[-1:-2,][-2,]
x<-x[,order(ncol(x):1]
a<-a[1,]
rownames(x)<-a
x

すべての国に変更しようとしたときの変更は、WDI で引数 "US" を "all" に変更することです。

これに関するすべての助けに感謝します!前もって感謝します!

4

2 に答える 2

4

reshape2パッケージの使用:

data.frameあなたがいると仮定しますdf(2番目の列名をに変更しましたInterest):

require(reshape2)
# use dcast as:
dcast(df, Country ~ Year, value.var="Interest")


#    Country 1990 1991 1992
# 1  Bolivia    5    6    7
# 2 Cambodia    8    9   10
# 3   Russia   11   12   13
于 2013-02-20T22:46:17.793 に答える
1
 reshape(dfrm, timevar="Year", direction="wide", idvar='Country')
#-------------
   Country Variable_of_Interest.1990 Variable_of_Interest.1991 Variable_of_Interest.1992
1  Bolivia                         5                         6                         7
4 Cambodia                         8                         9                        10
7   Russia                        11                        12                        13

名前を好みに合わせて修正したい場合は、 setNames が役立ちます。

setNames( reshape(dfrm, timevar="Year", direction="wide", idvar='Country'), 
           c("Country", unique(dfrm$Year) )  )
#--------------
   Country 1990 1991 1992
1  Bolivia    5    6    7
4 Cambodia    8    9   10
7   Russia   11   12   13

先頭に数字を含む列名は、引用符で囲まれていない限り、実際には有効ではないことに注意してください。

于 2013-02-20T22:51:41.317 に答える