我似乎偶然发现了使用R学习的困境。我有一个看起来像这样的数据集:
col1 / col2 / col3 NA / 1 / 2 1 / NA /2
我需要做的是用另一个值替换那些不是NA的东西(见下文)
Col1 / col2 / col 3 NA / Data / Data Data / NA/ Data
我在网上到处看,似乎每个人都想用其他值替换NA
,另一方面我需要完全相反但无法找到任何命令。我甚至研究了“IF”,但只能找到替换值的函数,如果它们是特定数字的<
或=
或>
。我需要指定的内容......“如果与NA
不同,则替换为....”
答案 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")