我对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
的范围从Jan2006
到Oct2013
(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中指定我的时间变量是什么,以便正确设置,我可以正确分析数据?