根据data.frame rownames中的日期从xts对象中提取值

时间:2015-10-17 14:10:33

标签: r indexing xts

我正在进行多期分析,我需要从名为data的xts对象中提取两个日期之间的值。

我计算的开始和结束位于这些日期之间。这些相同的日期在名为rownames的数据框中用作results

start_date <- head(rownames(results), n=1)
end_date <- tail(rownames(results), n=1) 

我还用这个向量识别列名:

> col_names
[1] "Stock1" "Stock2" "Stock3" 

我需要在datacol_namesstart_date之间的列中的end_date对象中提取观察结果。

1 个答案:

答案 0 :(得分:1)

假设'start_date'和'end_date'是'Date'格式的'character'向量('%Y-%m-%d'),我们paste将它们与{{1}一起},将其用作行索引,将'col_names'指定为列索引,并将sep='/'对象'数据'设置为子集。

xts

作为可重复的例子

data[paste(start_date, end_date, sep="/"), col_names]

如果我们需要'start_date'和'end_date'之间的行

library(xts)
data(sample.xts)
start_date <- '2007-01-02'
end_date <- '2007-01-05' 
col_names <-  c('Open', 'High')
sample.xts[paste(start_date, end_date, sep="/"), col_names]
#               Open     High
#2007-01-02 50.03978 50.11778
#2007-01-03 50.23050 50.42188
#2007-01-04 50.42096 50.42096
#2007-01-05 50.37347 50.37347