0

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

4

1 回答 1

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
于 2014-06-06T11:52:04.440 回答