Получить скользящее максимальное значение столбца, если значение другого столбца равно «T» - PullRequest
0 голосов
/ 09 января 2019

Я не очень уверен в поиске окон. Следовательно, вопрос может показаться немного простым. Но любая помощь будет великолепна.

У меня есть фрейм данных, который фиксирует движение цены каждую секунду. Фиктивный набор данных, как показано ниже

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, я хочу добавить новый столбец, который будет иметь максимальное значение столбца High для следующего 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 голосов
/ 09 января 2019

Это не лучший способ: вы можете использовать %in% для указания аргументов идентификатора, которые соответствуют n.

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
...