我正在处理国家级数据的大型数据集,这些数据采用国家/地区年度格式,并以下列形式显示(为方便起见):
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”。
我很感激这方面的所有帮助!先感谢您!
答案 0 :(得分:4)
使用reshape2
包:
假设您的data.frame
为df
(我将第二列名称更改为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
答案 1 :(得分: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
请注意,除非引用,否则带有前导数字的列名称无效。