1

在我努力学习使用 R 的过程中,我似乎偶然发现了一个困境。我有一个如下所示的数据集:

col1 / col2 / col3   

不适用 / 1 / 2

1 / 不适用 /2

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

Col1 / col2 / col 3

NA / 数据 / 数据

数据/NA/数据

我在网上到处查看,似乎每个人都想NA用其他值替换 's,另一方面,我需要完全相反但找不到任何命令。我什至查看了“IF”,但只能找到替换值的函数,如果它们是eiter<=or>到某个数字。我需要一些可以指定...“如果与 不同NA,则替换为...”

4

1 回答 1

3

数据:

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")
于 2012-11-15T10:29:33.900 回答