如何根据[不是]条件对xts对象进行子集化

时间:2015-08-15 21:21:59

标签: r xts

我有一个xts对象,现在我想选择除了一段时间之外的所有索引行。

据我所知,指定my.object["2015/2015-03-01"]会选择2015年到2015年3月的索引行。但是,如何根据相同的xts语法创建不是操作?

我已经尝试了my.object[!"2015/2015-03-01"],但它不起作用。

1 个答案:

答案 0 :(得分:4)

我不确定为什么你会期望my.object[!"2015/2015-03-01"]能够发挥作用。将逻辑函数应用于字符串是没有意义的。

无论如何,实现目标的一种方法是使用which.i [.xts参数来查找整数索引。然后,您可以在另一次调用i时使用否定[.xts从xts对象中删除这些观察结果。

R> require(xts)
R> data(sample_matrix)
R> x <- as.xts(sample_matrix)
R> unwantedObs <- x["2007-01-04/2007-06-28", which.i=TRUE]
R> x[-unwantedObs,]
               Open     High      Low    Close
2007-01-02 50.03978 50.11778 49.95041 50.11778
2007-01-03 50.23050 50.42188 50.23050 50.39767
2007-06-29 47.63629 47.77563 47.61733 47.66471
2007-06-30 47.67468 47.94127 47.67468 47.76719
R> # in one line:
R> #x[-x["2007-01-04/2007-06-28", which.i=TRUE],]