2014-06-05 36 views
0

我装一个像这样的大欧盟统计局数据集:多行CAST函数和时间列

install.packages("SmarterPoland") 
library(SmarterPoland) 
GDP_raw <- getEurostatRCV(kod = "namq_gdp_c") 

它具有这样的结构:

s_adj unit  indic_na geo  time  value 
1 NSA  EUR_HAB  B11   AT  2014Q1  NA 
2 NSA  EUR_HAB  B11   BE  2014Q1  200.0 
3 NSA  EUR_HAB  B11   BG  2014Q1  -100.0 

我想用“时间”为第一列和其他变量作为行。做它周围的其他方法很容易用:

GDP_sorted <- cast(GDP_raw, geo + unit + s_adj + indic_na ~ time) 

返回:

geo unit  s_adj indic_na 1955Q1 1955Q2 1955Q3 1955Q4 
1 AT EUR_HAB NSA  B11  NA  NA  NA  NA 
2 AT EUR_HAB NSA  B111  NA  NA  NA  NA 
3 AT EUR_HAB NSA  B112  NA  NA  NA  NA 

的问题是,这里的列是变量,所以每一个季度是它自己的变量,它没有任何意义从时间系列的角度来看。我需要某种转置(简单t()不会返回相同的数据类型)。但是,如果我尝试投周围的其他方式,它增加不同类别连成一个变量,并创建:

 time  AT_EUR_HAB_NSA_B11 AT_EUR_HAB_NSA_B111  AT_EUR_HAB_NSA_B112 
1  1955Q1 NA     NA      NA 
2  1955Q2 NA     NA      NA 
3  1955Q3 NA     NA      NA 

这意味着我有12405个变量。这使得子集不可行。我想沿线的东西:

 time 
s_adj   NSA     NSA      NSA 
geo    AT     AT      AT 
unit    EUR_HAB    EUR_HAB     EUR_HAB 
indic_na   B11     B12      B13 
1  1955Q1 NA     NA      NA 
2  1955Q2 NA     NA      NA 
3  1955Q3 NA     NA      NA 

等等(这是一个虚构的例子)。那么我可以使用:

Demand <- subset(GDP_sorted, (indic_na == "P3_P5") & (s_adj == "SWDA") & (unit == "MIO_EUR")) 

而不必指定12405变量的变量的所有组合。

回答

0

直到有人提供了一个更好的答案,这里是我现在使用一种解决方法:从原始下载表格

开始:

GDP_raw <- read.table("/media/38A05C6AA05C311C/1_Documents/Dropbox/Masterarbeit/2_R/Data/GDP_raw.RData") 

子集,然后你感兴趣的变量:

Demand <- subset(GDP_raw, (indic_na == "P3_P5") & (s_adj == "SWDA") & (unit == "MIO_EUR")) 

然后剩下的唯一维度是时间和地理区域,您可以简单地将其转换为:

Demand_cast <- cast(Demand, time ~ geo) 

它给你一个文件,你的形式变量的矩阵:

time AT BE BG 
1955Q1 NA NA NA 
1955Q2 NA NA NA 
1955Q3 NA NA NA