我浏览了一下网站,但找不到任何能回答我问题的帖子。
q<-ifelse(c$Action_PX != z & c$Above == 1,log(z/c$Action_PX, base = exp(1)),NA)
w<-ifelse(c$Action_PX != z & c$Below == 1,log(c$Action_PX/z, base = exp(1)),NA)
我正在建立一个动量交易模型,当我决定进行交易时(当动量发生变化时),这些函数会计算我的回报。到目前为止,当我运行这个模型时,我得到了这样的东西:
q w -> (I want) z
NA NA NA
NA NA NA
NA NA NA
0.012 NA 0.012
NA NA NA
NA 0.005 0.005
有没有什么方法可以把这两个(q和w)组合起来,只覆盖数字,让它看起来像z?非常感谢您的帮助!
供您参考,Above是一个二进制变量,当现货价格高于移动平均线时,它变为1,而Below则相反。当动量从下方变为上方时,我做多,当动量从上方变为下方时,我做空。z只是在Action_PX系列的开头添加0以获得动量所创建的另一组数据。我试着使用for循环,但我不能让它工作,所以我决定坚持使用更多的手动方式。任何改进我的模型的建议也非常感谢。
使用apply
和min
apply(df1, 1, function(x) if(all(is.na(x))) NA else min(x, na.rm=TRUE))
#[1] NA NA NA 0.012 NA 0.005