将数据帧转换为时间序列

时间:2017-02-15 20:57:01

标签: r dataframe time-series

Year    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2015    75  74  60  57  67  131 299 138 329 333 307 213
2016    141 174 72  219 139 163 160 82  150 177 138 138

以上是我正在处理的数据。我已将数据导入R,最初导入为data.frame

使用xlsx

xlsx文件导入数据
class(test)
"data.frame"

我希望将课程转换为ts。我已经尝试了一些现有的方法,但我仍然无法完成它。

2 个答案:

答案 0 :(得分:4)

这样的事似乎有效:

ts(df[-1], frequency = 1, start = df[1, 1], end = df[2, 1])

输出:

Time Series:
Start = 2015 
End = 2016 
Frequency = 1 
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
2015  75  74  60  57  67 131 299 138 329 333 307 213
2016 141 174  72 219 139 163 160  82 150 177 138 138

答案 1 :(得分:2)

你可以做到

test = ts(unlist(df[,-1]), start = df[1,1], frequency = ncol(df[,-1]))

test
#     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#2015  75 141  74 174  60  72  57 219  67 139 131 163
#2016 299 160 138  82 329 150 333 177 307 138 213 138

class(test)
#[1] "ts"

#Obtain the frequency
unique(cycle(test))
#[1]  1  2  3  4  5  6  7  8  9 10 11 12

#Obtain the years
unique(floor(time(test)))
#[1] 2015 2016