【问题标题】:Get rolling maximum value of a column if value of another column is "T"如果另一列的值为“T”,则获取列的滚动最大值
【发布时间】:2019-01-09 19:09:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: r dplyr plyr


    【解决方案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
    

    【讨论】:

    • ID 列的值可能并不总是 = 3
    • @NinjaR 就像我说的,可以使用%in%。试试这个:df %>% mutate(ID = row_number(), Max_Price = ifelse(Close > 3000 & ID%in%c(3,5), max(High), 0))你也可以添加一个新的替代答案。
    猜你喜欢
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2013-06-21
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多