如果另一列的值为“ T”,则获取一列的滚动最大值

时间:2019-01-09 19:09:34

标签: r dplyr plyr

我对查找窗口不是很自信。因此,这个问题似乎有点简单。但是任何帮助都会很棒。

我有一个数据框,可以捕获每秒的价格变动。虚拟数据集如下

Open    High    Low   Close
2000    5000    1300   1000
3000    3500    2000   3000
4000    4500    3500   4000
5000    5500    4500   3000
6000    6500    5500   4000

如果“关闭”列大于3000,我想追加一个新列,该列在接下来的n个周期内将具有“高”列的最大值。 n可能会根据要求而有所不同。例如,如果n为3,则结果数据帧应为0。

在这种情况下,输出将如下所示:

Open    High    Low   Close  Max_Price
2000    5000    1300   1000    0
3000    3500    2000   3000    0
4000    4500    3500   4000    6500
5000    5500    4500   3000    0
6000    6500    5500   4000    0

1 个答案:

答案 0 :(得分:1)

这不是最好的方法:您可以使用%in%来指定与n对应的ID参数。

df %>% 
  mutate(ID = row_number(), Max_Price = ifelse(Close > 3000 & ID == 3, max(High), 0))

输出:

 Open High  Low Close ID Max_Price
 2000 5000 1300  1000  1         0
 3000 3500 2000  3000  2         0
 4000 4500 3500  4000  3      6500
 5000 5500 4500  3000  4         0
 6000 6500 5500  4000  5         0
相关问题