如何根据 [is not] 条件对 xts 对象进行子集化
How to subset xts object based upon [is not] condition
我有一个 xts 对象,现在我想 select 除了特定时间段之外的所有索引行。
我知道指定 my.object["2015/2015-03-01"]
会 select 从 2015 年到 2015 年 3 月的索引行。但是我怎样才能基于相同的 xts 语法进行 is not 操作?
我已经尝试了 my.object[!"2015/2015-03-01"]
但它不起作用。
我不确定您为什么会期望 my.object[!"2015/2015-03-01"]
起作用。将逻辑函数应用于字符串没有意义。
无论如何,实现您想要的一种方法是使用 which.i
参数 [.xts
来查找整数索引。然后,您可以在对 [.xts
.
的另一个调用中使用否定 i
从 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],]
我有一个 xts 对象,现在我想 select 除了特定时间段之外的所有索引行。
我知道指定 my.object["2015/2015-03-01"]
会 select 从 2015 年到 2015 年 3 月的索引行。但是我怎样才能基于相同的 xts 语法进行 is not 操作?
我已经尝试了 my.object[!"2015/2015-03-01"]
但它不起作用。
我不确定您为什么会期望 my.object[!"2015/2015-03-01"]
起作用。将逻辑函数应用于字符串没有意义。
无论如何,实现您想要的一种方法是使用 which.i
参数 [.xts
来查找整数索引。然后,您可以在对 [.xts
.
i
从 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],]