R:用向量中的项替换NA

标签 r replace missing-data imputation

我正在尝试用相似组的平均值替换数据中的某些缺失值。

我的数据如下所示:

   X   Y
1  x   y
2  x   y
3  NA  y
4  x   y

我希望它看起来像这样:
  X   Y
1  x   y
2  x   y
3  y   y
4  x   y

我写了这个,它奏效了
for(i in 1:nrow(data.frame){
   if( is.na(data.frame$X[i]) == TRUE){
       data.frame$X[i] <- data.frame$Y[i]
   }
  }

但是我的data.frame几乎有一百万行长,并且for/if语句非常慢。我想要的是类似的东西
is.na(data.frame$X) <- data.frame$Y

但这会导致大小不匹配的错误。似乎应该有一个执行此操作的命令,但是我在SO或R帮助列表上找不到它。有任何想法吗?

最佳答案

ifelse是你的 friend 。

使用Dirk的数据集

df <- within(df, X <- ifelse(is.na(X), Y, X))

关于R:用向量中的项替换NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6684695/

相关文章:

r - 如何在 R 中创建向量或表列表

postgresql - 用多字符字符串替换字符

r - 选择一系列列中缺少数据的行

r - 如何将列中的所有 NA 换成中位数?

r - 如何防止生成 Rplots.pdf?

r - data.table、readr 和 dplyr 之间有冲突吗?

r - 错误 - 替换有 [x] 行,数据有 [y]

javascript - 将 jquery 中的分号替换为换行符

Java 使用正则表达式匹配器获取组

sql - 查找数据中缺失的日期