R将日期附加到时间序列

时间:2011-05-15 18:32:07

标签: r time-series

我在excel中有一个电子表格,其中包含第一行日期,然后是后续列,这些列表示这些日期不同证券的价格。

我将excel文件保存为csv,然后使用

导入excel
prices=read.csv(file="C:/Documents and Settings/Hugh/My Documents/PhD/Option prices.csv",header = TRUE, sep = ",")

这会创建正确的时间序列数据

x<-ts(prices[,2])

但没有附上日期。

但是日期是指工作日。因此,虽然一般情况下它们代表周一至周五,但由于假期等情况并非总是这样。

那么如何创建一个时间序列,从csv文件的第一列读入日期?我在R中找不到这样做的例子

1 个答案:

答案 0 :(得分:5)

由于你没有提供任何数据,这里有一个虚构的data.frame:

R> DF <- data.frame(date="2011-05-15", time=c("08:25:00", "08:45:00", 
+                   "09:05:11"), val=rnorm(3, 100, 5))
R> DF
        date     time     val
1 2011-05-15 08:25:00 99.5926
2 2011-05-15 08:45:00 95.8724
3 2011-05-15 09:05:11 96.6436
R> DF <- within(DF, posix <- as.POSIXct(paste(date, time)))
R> DF
        date     time     val               posix
1 2011-05-15 08:25:00 99.5926 2011-05-15 08:25:00
2 2011-05-15 08:45:00 95.8724 2011-05-15 08:45:00
3 2011-05-15 09:05:11 96.6436 2011-05-15 09:05:11
R> 

我使用了within(),您可以使用其他方法来分配新列。关键是paste()允许您组合列,您可以使用其他R函数根据需要修改数据。

以合适的类型(如POSIXct)解析日期和时间的关键优势是其他函数可以使用它。这是zoo

R> z <- with(DF, zoo(val, order.by=posix))
R> summary(z)
     Index                              z       
 Min.   :2011-05-15 08:25:00.00   Min.   :95.9  
 1st Qu.:2011-05-15 08:35:00.00   1st Qu.:96.3  
 Median :2011-05-15 08:45:00.00   Median :96.6  
 Mean   :2011-05-15 08:45:03.67   Mean   :97.4  
 3rd Qu.:2011-05-15 08:55:05.50   3rd Qu.:98.1  
 Max.   :2011-05-15 09:05:11.00   Max.   :99.6  
R>