如何在R中设置和使用stata时间序列数据集

时间:2014-05-15 08:29:32

标签: r time time-series stata

我对R很新,并且拥有一个具有以下结构的stata数据集

month.year  allcomp livebirths  abortiondeaths  comperbirths
1   552 206 925 0   222.7027
2   553 191 912 0   209.4298
3   554 221 675 3   327.4074

month.year的范围从Jan2006Oct2013(94个月),并使用来自Jan1960的stata内部代码进行编码。我将其导入R并且month.year是类numeric。它无法从mm-yyyy原点转换,因此我使用下面的代码转换日期

addmonth<-function(x)seq(as.Date("1960-01-01"), by=paste(x[1],"months"), length=2)[2]

将该功能应用于数据并从数值中恢复日期

retromonth$date <- as.Date(apply(retromonth, 1, addmonth), origin="1970-01-01")

然而,这会将每个月的第一天添加到我不想要的原始月份变量中,现在我的数据就像:

month.year allcomp livebirths abortiondeaths comperbirths       date
1        552     206        925              0     222.7027 2006-01-01
2        553     191        912              0     209.4298 2006-02-01
3        554     221        675              3     327.4074 2006-03-01

所以我尝试格式化日期变量

format(as.Date(retromonth$date), "%b %Y")

要将其设置为时间序列,请执行以下操作:

retrots<- ts(retromonth,frequency=12, start(2006,01))
> str(retrots)
mts [1:94, 1:6] 552 553 554 555 556 557 558 559 560 561 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:6] "month.year" "allcomp" "livebirths" "abortiondeaths" ...
- attr(*, "tsp")= num [1:3] 1 8.75 12
- attr(*, "class")= chr [1:3] "mts" "ts" "matrix"

> retrots
#      month.year allcomp livebirths abortiondeaths comperbirths  date
#Jan 1        552     206        925              0     222.7027 13149
#Feb 1        553     191        912              0     209.4298 13180
#Mar 1        554     221        675              3     327.4074 13208
#Apr 1        555     219       1035              3     211.5942 13239

然而,它似乎并没有使用我的数据变量作为时间,当我绘制图表时,X轴没有显示正确的日期变量。时间从数字2-8开始,它产生6个图,包括y轴上的日期和x轴上的时间。

有没有办法在R中指定我的时间变量是什么,以便正确设置,我可以正确分析数据?

0 个答案:

没有答案