gpt4 book ai didi

滚动最大值(滚动宽度)rollapply 不起作用

转载 作者:行者123 更新时间:2023-12-04 11:11:42 25 4
gpt4 key购买 nike

 x<- xts(c(1, 1.1, 1.2, 1.3, 1.4, -.9, 1.2), Sys.Date()-7:1)

x 中,我想要一个列,它会得出下面提到的结果。

x
[,1] max high
2013-07-07 1.0 1.0
2013-07-08 1.1 1.1
2013-07-09 1.2 1.2
2013-07-10 1.3 1.3
2013-07-11 1.4 1.4
2013-07-12 0.9 1.4
2013-07-13 1.2 1.4

如果我使用 rollapply 函数,我必须保持宽度固定,但我希望每个日期的最大值为截至日期。 rollapply 不工作。我想使用类似 rollapply(x, [1:i], max) 的东西,其中 i 代表否。的行。我得到的答案是要获得 max.high 我应该使用 cummax 并且它工作得很好。由于我被禁止在此论坛中提出新问题,因此我将在此问题中添加我的问题。我不知道这是否正确,但我没有其他方法可以做到。

x<- xts(c(100,98,105,100,99,98,96,95,94,93,99,100,106), Sys.Date()-13:1) colnames(x)<- "value" x$max<- cummax(x$value) x$trade<- ifelse(x$max*0.95>=x$value,1,0) x value max trade trade1 2013-07-05 100 100 0 0 2013-07-06 98 100 0 0 2013-07-07 105 105 0 0 2013-07-08 100 105 0 0 2013-07-09 99 105 1 1 2013-07-10 98 105 1 0 2013-07-11 96 105 1 0 2013-07-12 95 105 1 0 2013-07-13 94 105 1 1 2013-07-14 93 105 1 0 2013-07-15 99 105 1 -1 2013-07-16 100 105 0 0 2013-07-17 106 106 0 -1

直到列交易,我的代码工作,但我需要另一个列 trade1,它基于如果值至少小于列最大值的 5% 时,trade1 列将为 1 的逻辑,然后它会再次给我 1 时value 列至少比列 max 高 10%,并且当值从值 94 上升 5% 或更多时(因为当 trade1 列为 1 时 value 列是 94),trade1 列应该给我 -1 并再次当列值从值 99 上升 10% 或更多时(当 trade1 列为 1 时,值列再次为 99)

如果有人需要更清晰,我会再次尝试这样做。问候阿努普

最佳答案

cummax 计算展开(而不是滚动)窗口的最大值。

cummax(x)
# [,1]
# 2013-07-07 1.0
# 2013-07-08 1.1
# 2013-07-09 1.2
# 2013-07-10 1.3
# 2013-07-11 1.4
# 2013-07-12 1.4
# 2013-07-13 1.4

关于滚动最大值(滚动宽度)rollapply 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com