【问题标题】:R: xts complex queriesR:xts 复杂查询
【发布时间】:2012-02-02 20:22:58
【问题描述】:

为什么在查询日期时不能在 xts 对象中使用& 运算符? 例如,这些将起作用:

myts[myts$Symbol == "AAPL" & myts$Size > 100, c("Symbol", "Size")]
myts['2011-09-21', c("Symbol", "Size")]

但是日期/时间查询中的这个 AND 条件将不起作用:

myts[myts$Symbol == "AAPL" & '2011-09-21', c("Symbol", "Size")]
Error in `&.default`("2011-09-21", myts$Symbol == "AAPL") : 
   operations are possible only for numeric, logical or complex types

【问题讨论】:

    标签: r xts


    【解决方案1】:

    "2011-09-21" 不是逻辑向量,不能强制转换为逻辑向量。详情请见?"&"

    xts 的 ISO-8601 样式子集很好,但我们无法改变 .Primitive("&") 的行为。不过你可以这样做:

    myts[myts$Symbol == "AAPL" & index(myts) == as.POSIXct("2011-09-21"),]
    

    【讨论】:

    • 是否有另一种方法可以同时查询 xts 对象的时间索引和某些列内容?
    • 快到了。这不是我需要的日期的完美匹配,而是“grep”“2011-09-21”的所有行。我有多行日期相同但时间不同。
    • @RobertKubrick:那么您可以执行as.Date(index(x),tz="America/Chicago")=="2011-09-21" 之类的操作,但请务必考虑时区。
    【解决方案2】:

    使用双索引解决此问题的另一种方法:

    myts[myts$Symbol == "AAPL"]['2011-09-21']
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2017-05-10
      • 2014-11-06
      • 2011-06-08
      • 2012-10-25
      • 2017-05-22
      • 2023-04-08
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多