我有一个如下所示的时间序列数据集:
age time income
16 to 24 2004 q1 400
16 to 24 2004 q2 500
… …
65 and over 2014 q3 800
每个年龄组的收入数据有不同的60个季度。收入数据是季节性的。我正在尝试应用分解函数来过滤掉趋势。到目前为止,我所做的是下面的内容。但R始终向我抛出错误(错误消息:未定义列选择)。任何想法如何去做?
fun =function(x){
ts = ts(x,frequency=4,start=c(2004,1))
ts.d =decompose(ts,type='additive')
as.vector(ts.d$trend)
}
trend.dt = ddply(my.dat,.(age),transform,trend=fun(income))
预期结果是(NA是因为,在分解之后,第一个和最后一个ob将没有值,但其余的应该有)
age time income trend
16 to 24 2004 q1 400 NA
16 to 24 2004 q2 500 489
… …
65 and over 2014 q3 800 760
65 and over 2014 q3 810 NA