我有一个像这样加载的大型 Eurostat 数据集:
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 个变量中指定所有变量组合。