gpt4 book ai didi

r - 使用多个 ifelse() 创建列

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

require(xts)

data<- c(100,101,102,103,104,99,98,97,94,93,103,90,104,105,110)
date<- Sys.Date()-15:1
file<- xts(data,date)
colnames(file)<- "CLOSE"
file$high<- cummax(file$CLOSE)
file$trade<- ifelse(file$high*.95>=file$CLOSE, 1,ifelse(file$high*.9>=file$CLOSE, 2,0))
file

CLOSE high trade
2013-07-05 100 100 0
2013-07-06 101 101 0
2013-07-07 102 102 0
2013-07-08 103 103 0
2013-07-09 104 104 0
2013-07-10 99 104 0
2013-07-11 98 104 1
2013-07-12 97 104 1
2013-07-13 94 104 1
2013-07-14 93 104 1
2013-07-15 103 104 0
2013-07-16 90 104 1
2013-07-17 104 104 0
2013-07-18 105 105 0
2013-07-19 110 110 0

我给出的交易栏命令是当.90*column high >= close时,交易结果应该是2。我不明白为什么交易列在 2013-07-14 和 2013-07-16 不等于 2。

我已经找到了上述问题的答案。我的实际问题是别的。我以为我会做研究并完成它,但问题仍然存在。我需要交易栏在每次收盘价从高点下跌 5%、10%、15%...时给我 +1 或 -1,当收盘价再次上涨 10% 时,它应该给我 - 1.当我们在任何给定日期添加 +1 和 -1 时,它不应为 -ve 或大于 5。

最佳答案

为了清晰起见,我认为我更喜欢 Joshua 的方法,但是修复 ifelse 子句的方法是交换测试。所以改变这个:

file$trade<- ifelse(file$high*.95>=file$CLOSE, 1,ifelse(file$high*.9>=file$CLOSE, 2,0))

为此:

file$trade<- ifelse(file$high*.90>=file$CLOSE, 2,ifelse(file$high*.95>=file$CLOSE, 1,0))

附言可能使用 ifelse 更快(当分解为三行时,所有“2”先设置为 0,然后设置为 1,然后再设置为 2)。在“2”结果相对不常见的情况下,我敢肯定差异太小而无法进行基准测试。

关于r - 使用多个 ifelse() 创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761349/

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