r - 将R中选定列中的所有NA替换为FALSE

标签 r dataframe na missing-data imputation

我有一个类似于this one的问题,但我的数据集更大:50列,其中1列为UID,其他列带有TRUENA,我想将所有NA更改为FALSE,但是我不想使用显式循环。plyr可以解决问题吗?谢谢。
更新1
感谢您的快速回复,但是如果我的数据集如下所示,该怎么办:

df <- data.frame(
  id = c(rep(1:19),NA),
  x1 = sample(c(NA,TRUE), 20, replace = TRUE),
  x2 = sample(c(NA,TRUE), 20, replace = TRUE)
)
我只希望处理X1X2,该怎么办?

最佳答案

如果要替换变量的子集,仍然可以使用is.na(*) <-技巧,如下所示:

df[c("x1", "x2")][is.na(df[c("x1", "x2")])] <- FALSE

IMO使用临时变量使逻辑更易于遵循:
vars.to.replace <- c("x1", "x2")
df2 <- df[vars.to.replace]
df2[is.na(df2)] <- FALSE
df[vars.to.replace] <- df2

关于r - 将R中选定列中的所有NA替换为FALSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279089/

相关文章:

r - 在 Shiny 中自动完成文本字段

r - R 中使用plotly 绘制树状图

python - 根据日期和时间分割数据

python - Pandas.DataFrame.resample 出现意外结果

r - 强制 summary() 报告 NA 的数量,即使没有

r - 用于异常检测的具有缺失值的时间序列的 STL 分解

r - Shiny - "choices"中的所有子列表都必须命名吗?

r - 通过system/shell.exec获取Windows命令运行

python - 在 DataFrame 中将 Pandas 系列转换为 DateTime

删除列表中矩阵中的 NA 列会删除矩阵的列名