重新编码值省略了NA' s

时间:2015-01-29 11:36:42

标签: r missing-data recode

我想重新编码矩阵中的值,使得所有值< =。2变为2,< =。4变为3等等。但是,我的数据中有缺失,我不想要改变(保持NA)。在这里,您可以找到我的代码的简化版本。使用na.omit可以完美地进行第一次更改

try <- matrix(c(0.78,0.62,0.29,0.47,0.30,0.63,0.30,0.20,0.15,0.58,0.52,0.64,
     0.76,0.32,0.64,0.50,0.67,0.27, NA), nrow = 19)
try[na.omit(try <= .2)] <- 2 #Indeed changes .20 and .15 to 2 and leaves the NA as NA

然而,当我为更高类别做同样的事情时,NA也会改变:

try[na.omit(try <= .8)] <- 5 #changes all other values including the NA to 5

有人可以向我解释两者之间有什么区别,为什么第二个也会改变NA值,而第一个没有?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

你可以做到

try[try <= .8] <- 5

NA值将保持为NA

或创建逻辑条件以排除NA

try[try <=.8 & !is.na(try)] <- 5