我正在尝试在 R 中运行一些交易策略。我已经下载了一些股票价格并计算了回报。新的返回数据集具有多个 -inf、NaN 和 NA 值。我正在复制数据集的一行(log_ret)。它是一个动物园数据集。
library(zoo)
log_ret <- structure(
c(0.234,-0.012,-Inf,NaN,0.454,Inf), .Dim = c(1L, 6L),
.Dimnames = list(NULL, c("x", "y", "z", "s", "p", "t")),
index = structure(12784, class = "Date"),
class = "zoo"
)
x y z s p t
2005-01-01 0.234 -0.012 -Inf NaN 0.454 Inf
如何用 0 替换这些不需要的值?
Inf
, NA
and NaN
匹配的是!is.finite
, 例如
a <- c(1, Inf, NA, NaN)
a[!is.finite(a)] <- 0
# a is now [1, 0, 0, 0]
我对操纵不太了解zoo
对象,但是对于上面的例子
log_ret[1, !is.finite(log_ret)] <- 0
作品。在您的实际数据中,您将必须循环遍历所有行。可能有一个zoo
- 执行此操作的具体方法。
Edit:动物园特有的方式是log_ret[which(!is.finite(log_ret))] <- 0
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)