【问题标题】:How to subset xts object based upon [is not] condition如何根据 [不是] 条件对 xts 对象进行子集化
【发布时间】:2015-11-08 20:32:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: r xts


    【解决方案1】:

    我不确定您为什么期望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],]
    

    【讨论】:

    • 谢谢。请问,which.i和which有什么区别?
    • 正如我在回答中所说,which.i[.xts 的一个参数。 which 是一个函数。
    • 哦。我问的原因是它们的行为完全相同(使用 which.i 或 which)并不重要。
    • @uncool:这是由于部分参数匹配。例如,尝试x["2007-01-04/2007-06-28", w=TRUE]
    猜你喜欢
    • 2017-09-06
    • 2015-11-27
    • 2020-04-15
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    相关资源
    最近更新 更多