我有一个包含以下数据的CSV文件-
日期,组,整数值
数据中包含的20个组的日期从2013年1月1日到2015年10月31日。
我想为20个不同的组创建一个时间序列。但是日期不是连续的,并且有零星的间隔,因此-
group4series <- ts(group4, frequency = 365.25, start = c(2013,1,1))
从编程的角度来看是可行的,但由于数据差异而不能正确使用。
如何使用数据的“日期”列而不是通常的“ ts()”函数的“频率”参数来创建时间序列?
谢谢!
答案 0 :(得分:2)
您可以使用zoo::zoo
代替ts
。
由于您不提供示例数据,因此让我们生成每日数据,并删除几天以引入“空白”。
set.seed(2018)
dates <- seq(as.Date("2015/12/01"), as.Date("2016/07/01"), by = "1 day")
dates <- dates[sample(length(dates), 100)]
我们构造了一个示例data.frame
df <- data.frame(
dates = dates,
val = cumsum(runif(length(dates))))
要将df
转换为zoo
时间序列,可以执行以下操作
library(zoo)
ts <- with(df, zoo(val, dates))
让我们绘制时间序列
plot.zoo(ts)