[英]Function for Appending Rows to Data Frame Based on Previous Variable Values in 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.04
的z
的组件:
> library(zoo)
> z <- zoo(DF$Price)
> z[lag(z, -1) > 0.04]
3 4
0.051612903 -0.006134969
如果result
是最后一行代码的值,则time(result)
给出时间(上例中为3
和4
), coredata(result)
给出数据值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.