我的数据如下:
Country.Code Indicator.Code X1960 X1961 X1962 X1963 X1964 X1965
AFG allsi.bi_q1 NA NA NA NA NA NA
AFG allsp.bi_q1 NA NA NA NA NA NA
AFG allsa.bi_q1 NA NA NA NA NA NA
AFG lm_ub.bi_q1 NA NA NA NA NA NA
AFG allsi.gen_pop NA NA NA NA NA NA
AFG allsp.gen_pop NA NA NA NA NA NA
并希望看起来像这样:
Country.Code Year allsi.bi_q1 allsp.bi_q1 allsa.bi_q1 lm_ub.bi_q1 allsi.gen_pop allsp.gen_pop
AFG 1960 NA NA NA NA NA NA
AFG 1961 NA NA NA NA NA NA
AFG 1962 NA NA NA NA NA NA
AFG 1963 NA NA NA NA NA NA
AFG 1964 NA NA NA NA NA NA
AFG 1965 NA NA NA NA NA NA
我尝试使用melt
中的reshape2
,但我得到的就是这样(在使用as.numeric(substr(dataset$variable,2,5))
之后)得到年变量:
Country.Code Indicator.Code variable value year
AFG allsi.bi_q1 X1960 NA 1960
AFG allsp.bi_q1 X1960 NA 1960
AFG allsa.bi_q1 X1960 NA 1960
AFG lm_ub.bi_q1 X1960 NA 1960
AFG allsi.gen_pop X1960 NA 1960
AFG allsp.gen_pop X1960 NA 1960
如何让indicator.code
的值成为相应年份和国家/地区的value
值的列?请忽略我的例子中的NAs。
答案 0 :(得分:2)
你需要在融化后使用dcast
进行投射(同样来自reshape2
)。
dcast(longdat, Country.Code + year ~ Indicator.Code, value.var = "value")