4

我想以所有值 <=.2 变为 2,<=.4 变为 3 等方式重新编码矩阵中的值。但是,我的数据中有缺失,我不想更改(保留它们不)。在这里您可以找到我的代码的简化版本。使用 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 值,而第一个没有?还是我做错了什么?

4

1 回答 1

1

你可以做

try[try <= .8] <- 5

值将NA保持为NA

或者创建一个逻辑条件来排除这些NA

try[try <=.8 & !is.na(try)] <- 5
于 2015-03-07T15:22:05.430 回答