我有一个每日1000个价格的CSV文件
他们的格式如下:
1 1.6
2 2.5
3 0.2
4 ..
5 ..
6
7 ..
.
.
1700 1.3
指数是1:1700
但我需要以这种方式指定开始日期和结束日期:
开始时间就是说,2009年1月25日 最后的第1700个值对应于2013年第14期
到目前为止,我已经接近这个问题:
> dseries <- ts(dseries[,1], start = ??time??, freq = 30)
我该如何解决这个问题?感谢
更新: 设法创建一个单独的对象,其中包含答案中建议的日期并绘制它,但y轴很奇怪,如屏幕截图所示
答案 0 :(得分:3)
这样的东西?
as.Date("25-01-2009",format="%d-%m-%Y") + (seq(1:1700)-1)
更好方式,感谢@AnandaMahto:
seq(as.Date("2009-01-25"), by="1 day", length.out=1700)
绘图:
df <- data.frame(
myDate=seq(as.Date("2009-01-25"), by="1 day", length.out=1700),
myPrice=runif(1700)
)
plot(df)
答案 1 :(得分:2)
R将日期分类对象存储为“1970-01-01”的整数偏移量,但as.Date.numeric
函数需要偏移量(“原点”),可以是任何启动日期:
rDate <- as.Date.numeric(dseries[,1], origin="2009-01-24")
测试:
> rDate <- as.Date.numeric(1:10, origin="2009-01-24")
> rDate
[1] "2009-01-25" "2009-01-26" "2009-01-27" "2009-01-28" "2009-01-29"
[6] "2009-01-30" "2009-01-31" "2009-02-01" "2009-02-02" "2009-02-03"
您不需要添加扩展名.numeric
,因为如果您使用带有整数参数的通用词干as.Date
,则R会自动寻找该函数。我只是把它放入,因为as.Date.numeric
的参数不同于as.Date.character
。