【问题标题】:Generate Time Series in R with existing year variable使用现有年份变量在 R 中生成时间序列
【发布时间】:2016-06-20 10:15:31
【问题描述】:

我的问题

我想在时间序列变量中设置一个现有变量 (year) 以用于 R 中的回归。

我的数据

我有一个从 1999 年到 2013 年的国家级社会经济信息数据集(数据框格式)。并非每个国家/地区都有每年的观察结果。有些填补了整个范围(1999-2013)。其他人没有。

数据如下:

data:
year   country   economy       poverty
2011   Algeria   1.0814223     1.3310658
2012   Algeria   0.4172840     0.6206897
2013   Algeria   0.5652174     0.9222222
1999   Morocco   1.0814223     1.3310658
2000   Morocco   1.3310658     1.1468254
2001   Morocco   0.6206897     1.2805829
2002   Morocco   0.9222222     1.3310658
2003   Morocco   1.6500000     0.7612833
2004   Morocco   0.9126984     0.9768519
2005   Morocco   1.1388889     1.3310658
2006   Morocco   1.0500000     0.8011516
2007   Morocco   1.0458075     0.5761905
2008   Morocco   1.5017544     0.6222222
2009   Morocco   1.1666667     1.3310658
2010   Morocco   1.0527660     1.1468254
2011   Morocco   1.3611111     0.5761905
2012   Morocco   1.1666667     0.5761905
2013   Morocco   1.4137931     0.5761905

如何告诉 R 将这些数据视为时间序列?我尝试了以下方法:

将整个数据帧设置为时间序列:

ts.data <- as.ts(data, start = 1999, end = 2013)

在数据集中设置时间序列变量:

data$timeseries <- ts(data$year, start = 1999, end = 2013, frequency = 1)

不幸的是,两者都不起作用。

我确定这是一个愚蠢的问题,我深表歉意。提前感谢您的帮助!

【问题讨论】:

  • 您似乎有多个时间系列(每个国家/地区一个),而不仅仅是一个。根据您的计划,您可能希望使用zoo 或最有可能使用plm 并将其设置为面板数据。

标签: r time-series


【解决方案1】:

假设您确实想根据问题中所述创建一个时间序列:

library(zoo)
z <- read.zoo(data, split = "country")

给出这个"zoo" 类对象(输出后继续):

> z
     economy.Algeria poverty.Algeria economy.Morocco poverty.Morocco
1999              NA              NA       1.0814223       1.3310658
2000              NA              NA       1.3310658       1.1468254
2001              NA              NA       0.6206897       1.2805829
2002              NA              NA       0.9222222       1.3310658
2003              NA              NA       1.6500000       0.7612833
2004              NA              NA       0.9126984       0.9768519
2005              NA              NA       1.1388889       1.3310658
2006              NA              NA       1.0500000       0.8011516
2007              NA              NA       1.0458075       0.5761905
2008              NA              NA       1.5017544       0.6222222
2009              NA              NA       1.1666667       1.3310658
2010              NA              NA       1.0527660       1.1468254
2011       1.0814223       1.3310658       1.3611111       0.5761905
2012       0.4172840       0.6206897       1.1666667       0.5761905
2013       0.5652174       0.9222222       1.4137931       0.5761905

或转换为"ts" 类:

tt <- as.ts(z)

注意:输入data的可重现形式为:

Lines <- "year   country   economy       poverty
2011   Algeria   1.0814223     1.3310658
2012   Algeria   0.4172840     0.6206897
2013   Algeria   0.5652174     0.9222222
1999   Morocco   1.0814223     1.3310658
2000   Morocco   1.3310658     1.1468254
2001   Morocco   0.6206897     1.2805829
2002   Morocco   0.9222222     1.3310658
2003   Morocco   1.6500000     0.7612833
2004   Morocco   0.9126984     0.9768519
2005   Morocco   1.1388889     1.3310658
2006   Morocco   1.0500000     0.8011516
2007   Morocco   1.0458075     0.5761905
2008   Morocco   1.5017544     0.6222222
2009   Morocco   1.1666667     1.3310658
2010   Morocco   1.0527660     1.1468254
2011   Morocco   1.3611111     0.5761905
2012   Morocco   1.1666667     0.5761905
2013   Morocco   1.4137931     0.5761905"

data <- read.table(text = Lines, header = TRUE)

【讨论】:

  • 亲爱的@g-grothendieck,非常感谢您的回复。我会尽快尝试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 2014-02-02
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2021-03-14
相关资源
最近更新 更多