替换所有与值不同的值" NA"

时间:2012-11-15 10:23:31

标签: r replace na

我似乎偶然发现了使用R学习的困境。我有一个看起来像这样的数据集:

col1  /   col2  /   col3   

NA  / 1 /  2

1  /  NA  /2

我需要做的是用另一个值替换那些不是NA的东西(见下文)

Col1  /  col2  /    col 3

NA / Data / Data

Data / NA/ Data

我在网上到处看,似乎每个人都想用其他值替换NA,另一方面我需要完全相反但无法找到任何命令。我甚至研究了“IF”,但只能找到替换值的函数,如果它们是特定数字的<=>。我需要指定的内容......“如果与NA不同,则替换为....”

1 个答案:

答案 0 :(得分:2)

数据:

dat <- data.frame(col1 = c(NA, 1), col2 = c(1, NA), col3 = c(2, 2))

要选择 NA的所有值,请使用逻辑运算符!(“not”)和is.na

dat[!is.na(dat)] <- "Data"

  col1 col2 col3
1 <NA> Data Data
2 Data <NA> Data

使用replace函数也可以实现同样的目的:

replace(dat, !is.na(dat), "Data")

如果要替换因子值,则需要另一种方法。这可以通过以下命令实现:

replace(data.frame(lapply(dat, as.character), stringsAsFactors = FALSE),
        !is.na(dat), "Data")