首页 > 解决方案 > 如果另一列的值为“T”,则获取列的滚动最大值

问题描述

我对查找窗口不是很有信心。因此,这个问题可能看起来有点简单。但任何帮助都会很棒。

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

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

如果 Close 列高于 3000,我想附加一个新列,该列将在下一个 n 期间具有 High 列的最大值。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

标签: rdplyrplyr

解决方案


这不是最好的方法:您可以使用%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

推荐阅读