Replace -inf, NaN and NA values with zero in a dataset in R

后端 未结 4 594
深忆病人
深忆病人 2020-12-06 02:10

I am trying to run some trading strategies in R. I have downloaded some stock prices and calculated returns. The new return dataset has a number of -inf, NaN, and NA values.

4条回答
  •  庸人自扰
    2020-12-06 02:23

    Inf, NA and NaN are matched by !is.finite, for example

    a <- c(1, Inf, NA, NaN)
    a[!is.finite(a)] <- 0
    # a is now [1, 0, 0, 0]
    

    I don't know too much about manipulating zoo objects, but for the example above

    log_ret[1, !is.finite(log_ret)] <- 0
    

    works. In your actual data you will have to loop over all rows. There might be a zoo-specific way of doing this.

    Edit: The zoo-specific way is log_ret[which(!is.finite(log_ret))] <- 0.

提交回复
热议问题