如何根据先前行的值选择R数据框中的行

时间:2013-04-03 00:34:57

标签: r dataframe subset

我有一个似乎是一个我无法解决的简单问题。我有一个R数据框,由一列数据点组成,如下所示。我想将一个新的数据框子集,该数据框包含基于先前数据点值的数据点。

下面,我想比较前一个值大于.04的所有行的子集。任何想法,将不胜感激。谢谢。

         Price
[1,] -0.006666667
[2,]  0.040268456
[3,]  0.051612903
[4,] -0.006134969
[5,]  0.006172840
[6,]  0.006134969
[7,]  0.030487805

2 个答案:

答案 0 :(得分:2)

像这样:

x[c(FALSE, head(x$Price, -1) > 0.04), , drop = FALSE]

(从您的打印件看,您的对象可能是矩阵,而不是data.frame。如果是这种情况,请将x$Price替换为x[, "Price"]。)

答案 1 :(得分:2)

这些类型的操作可以通过使用时间序列表示直接模仿我们的思维过程的方式完成。这也具有以下优点:它现在处于这种表示中并且还将促进进一步的计算。假设DF是数据框。将其转换为zoo对象z,然后提取滞后超过z的{​​{1}}组件:

0.04

如果> library(zoo) > z <- zoo(DF$Price) > z[lag(z, -1) > 0.04] 3 4 0.051612903 -0.006134969 是最后一行代码的值,那么result会给出上述示例中的时间(time(result)3)和4给出数据值。