r - 如果另一列的值为“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
解决方案
这不是最好的方法:您可以使用%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
推荐阅读
- intellij-idea - intellij idea 结帐错误:doenst 显示“svn 结帐选项”对话框?
- kotlin - Kotlin 的 fold 是什么让我可以将操作函数放在右括号之后?
- google-cloud-platform - 谷歌云实例显示 SSH 而不是 RDP(Windows 而不是 Linux)
- javascript - 更新到 Codeigniter 3.x 后,为什么在 ajax 调用期间出现 json 解析错误?
- ruby-on-rails - 显示多行错误消息
- mysql - 从 db 表中获取行
- reactjs - 我可以在不违反 React 设计原则的情况下在 reducer 中验证令牌吗?
- java - 为什么java支持255维数组,而在现实生活中我们很少超过2D?
- python - Python Pong Game在1后没有增加点
- f# - F# - 以微秒为单位的时间转换为星期几