如何在 xts 对象中用 NA 替换 Inf 和 NaN
How to replace Inf and NaN with NA in an xts object
我有一个 xts
对象 (df
):
## a b
## 2015-09-14 -0.5470 NA
## 2015-09-15 0.0112 NA
## 2015-09-16 0.0910 0.932
## 2015-09-17 -Inf 0.862
## 2015-09-18 Inf 1.946
## 2015-09-21 -0.7050 2.692
## 2015-09-22 NaN 2.011
## 2015-09-23 -0.5440 1.859
## .
## .
## etc
因为列 a
包括 Inf
、-Inf
和 NaN
,我遇到了一些错误。有没有办法用 NA
替换这些值(将 Inf
和 NaN
视为缺失值)?
您可以像在普通 matrix
上一样使用 apply
使用您提供的数据:
d <- xts(read.zoo(text='date a b
2015-09-14 -0.5470 NA
2015-09-15 0.0112 NA
2015-09-16 0.0910 0.932
2015-09-17 -Inf 0.862
2015-09-18 Inf 1.946
2015-09-21 -0.7050 2.692
2015-09-22 NaN 2.011
2015-09-23 -0.5440 1.859', header=T, index=1))
apply(d, 2, function(x) ifelse(is.finite(x), x, NA))
## a b
## 2015-09-14 -0.5470 NA
## 2015-09-15 0.0112 NA
## 2015-09-16 0.0910 0.932
## 2015-09-17 NA 0.862
## 2015-09-18 NA 1.946
## 2015-09-21 -0.7050 2.692
## 2015-09-22 NA 2.011
## 2015-09-23 -0.5440 1.859
另一种方法是通过索引要保留(或删除)的元素来进行替换
d[!is.finite(d)] <- NA
我有一个 xts
对象 (df
):
## a b
## 2015-09-14 -0.5470 NA
## 2015-09-15 0.0112 NA
## 2015-09-16 0.0910 0.932
## 2015-09-17 -Inf 0.862
## 2015-09-18 Inf 1.946
## 2015-09-21 -0.7050 2.692
## 2015-09-22 NaN 2.011
## 2015-09-23 -0.5440 1.859
## .
## .
## etc
因为列 a
包括 Inf
、-Inf
和 NaN
,我遇到了一些错误。有没有办法用 NA
替换这些值(将 Inf
和 NaN
视为缺失值)?
您可以像在普通 matrix
apply
使用您提供的数据:
d <- xts(read.zoo(text='date a b
2015-09-14 -0.5470 NA
2015-09-15 0.0112 NA
2015-09-16 0.0910 0.932
2015-09-17 -Inf 0.862
2015-09-18 Inf 1.946
2015-09-21 -0.7050 2.692
2015-09-22 NaN 2.011
2015-09-23 -0.5440 1.859', header=T, index=1))
apply(d, 2, function(x) ifelse(is.finite(x), x, NA))
## a b
## 2015-09-14 -0.5470 NA
## 2015-09-15 0.0112 NA
## 2015-09-16 0.0910 0.932
## 2015-09-17 NA 0.862
## 2015-09-18 NA 1.946
## 2015-09-21 -0.7050 2.692
## 2015-09-22 NA 2.011
## 2015-09-23 -0.5440 1.859
另一种方法是通过索引要保留(或删除)的元素来进行替换
d[!is.finite(d)] <- NA