簡體   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