繁体   English   中英

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

[英]How to select rows in an R data frame based on values of previous rows

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

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

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

像这样:

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

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

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

> library(zoo)
> z <- zoo(DF$Price)
> z[lag(z, -1) > 0.04]
           3            4 
 0.051612903 -0.006134969 

如果result是最后一行代码的值,则time(result)给出时间(上例中为34 ), coredata(result)给出数据值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM