如何将csv文件中的索引更改为适当的时间格式?

时间:2013-11-29 15:28:24

标签: r csv

我有一个每日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轴很奇怪,如屏幕截图所示 enter image description here

2 个答案:

答案 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