将数据帧转换为时间序列
问题描述:
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
库
class(test)
"data.frame"
导入从xlsx
文件中的数据我想这个类转换为ts
。我尝试了一些现有的方法,但我仍然无法完成。
答
像这样的事情似乎工作:
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
答
你可以做
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
+1
这段代码确实很好。 –
@lmo一个非常好的问题确实。谢谢! – LyzandeR
感谢您的更新。这种方法工作得很好 –
你非常欢迎@PraveenRKaruppannan。高兴地帮助:) – LyzandeR