在R中查找单元格和单元格位置的时间序列值

时间:2014-06-03 22:19:19

标签: r set boolean

我试图提出两件事:一个单元格中的值> /< / =到另一个单元格中的值,以及到单元格的相应日期。在这种情况下,它是>。

我的数据 - res - 是:

head(res)
GMT
              NYSELOSS     ES99
1993-12-16 -0.28136694 1.743147
1993-12-17 -0.63817553 1.719892
1993-12-20  0.07743844 1.758305
1993-12-21  0.17491580 1.742691
1993-12-22 -0.39203213 1.719068
1993-12-23 -0.13143421 1.723541


 tail(res)
 GMT
              NYSELOSS     ES99
  2005-11-04  0.3623103 3.000793
  2005-11-07 -0.1578494 2.928393
  2005-11-08  0.3957594 2.839604
  2005-11-09 -0.1503598 2.780169
  2005-11-10 -0.3877294 2.698658
  2005-11-11 -0.4144052 2.634240

我可以使用以下代码字符串来提取值:

res[(res$NYSELOSS >= res$ES99)]

[1] 2.259965 3.015331 6.791045 5.274660 4.701324 1.648440 2.699520 4.060133 4.418048 4.104483

但我不能拉出相应的日期。

有谁知道怎么做?

谢谢!

更新

以下是数据:

dput(head(res))
new("timeSeries"
    , .Data = structure(c(-0.281366940350214, -0.638175532646112, 0.0774384430632047, 
0.174915802081443, -0.392032128912856, -0.131434207552861, 1.74314672137931, 
1.71989198272187, 1.75830475778356, 1.74269091505136, 1.71906771494426, 
1.72354094272865), .Dim = c(6L, 2L), .Dimnames = list(NULL, c("NYSELOSS", 
"ES99")))
    , units = c("NYSELOSS", "ES99")
    , positions = c(7.56e+08, 756086400, 756345600, 756432000, 756518400, 756604800
)
    , format = "%Y-%m-%d"
    , FinCenter = "GMT"
    , recordIDs = structure(list(), .Names = character(0), row.names = integer(0), class = "data.frame")
    , title = "Time Series Object"
    , documentation = "Tue Jun  3 15:02:41 2014"
)

UPDATE2

仍有问题:/

subset(res, res$NYSELOSS >= res$ES99, select = "GMT")
 [1] 2.259965 3.015331 6.791045 5.274660 4.701324 1.648440 2.699520 4.060133 4.418048 4.104483

1 个答案:

答案 0 :(得分:1)

您感兴趣的似乎是数据集的行名称。您应该可以使用row.names来获取这些内容,例如:

row.names(subset(res, NYSELOSS >= ES99))

更新:对象是包timeSeries中的timeSeries对象,subset未针对此类对象实现(与headtail不同这是实施的)。为了子集,您必须在对象周围包裹as.data.frame

row.names(subset(as.data.frame(res), NYSELOSS >= ES99))

这应该可以解决问题。