Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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. I am reproducing a row of the dataset (log_ret). Its a zoo dataset.

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

How can I replace these unwanted values with 0?

like image 969
user2641784 Avatar asked Jun 22 '15 22:06

user2641784


People also ask

How do I replace Nan with 0 in R?

Replace NA with 0 in R Data Frame To replace NA with 0 in an R data frame, use is.na() function and then select all those values with NA and assign them to 0.

How do I replace missing values with NA in R?

So, how do you replace missing values with basic R code? To replace the missing values, you first identify the NA's with the is.na() function and the $-operator. Then, you use the min() function to replace the NA's with the lowest value.

How do I replace Na in a csv file in R?

You can replace NA values with blank space on columns of R dataframe (data. frame) by using is.na() , replace() methods. And use dplyr::mutate_if() to replace only on character columns when you have mixed numeric and character columns, use dplyr::mutate_at() to replace on multiple selected columns by index and name.


1 Answers

As per ?zoo:

Subscripting by a zoo object whose data contains logical values is undefined.

So you need to wrap the subsetting in a which call:

log_ret[which(!is.finite(log_ret))] <- 0
log_ret
               x      y z s     p t
2005-01-01 0.234 -0.012 0 0 0.454 0
like image 123
thelatemail Avatar answered Sep 19 '22 08:09

thelatemail