用列表中的项替换NA值

时间:2014-10-21 00:33:30

标签: r na

我有一个数据框,其中有22列,有些约有600行。在其中一列中,我有一堆NA值,我想用列表中的项替换那些,所以我可以使用该列作为ID但是我还没有找到解决方案

简单的replace(data$Tag_Number, is.na(data$Tag_Number, pse.id)) 不起作用(where pse.id = (5000:6000))

我也尝试过:

>for(i in length(data[,1])){
  if(is.na(data$Tag_Number[i])==TRUE){
    new.id = pse.id[[i]]
    data$Tag_Number[i] = new.id
  }
}

似乎R真的不希望我写NA值。 任何想法?

1 个答案:

答案 0 :(得分:0)

我没有看到使用常规赋值运算符的任何问题。回答你对问题的更一般性陈述:

> x <- 1:10
> y <- c(30, 31, NA, 41, 46, NA, 55, NA, 66, 80)
> df <- data.frame(x, y)
> New <- 1000:2000
> df$y[is.na(df$y)] <- New[1:sum(is.na(df$y))] 
> df
    x    y
1   1   30
2   2   31
3   3 1000
4   4   41
5   5   46
6   6 1001
7   7   55
8   8 1002
9   9   66
10 10   80

确保您分配的New元素数量等于被覆盖的NA值的数量。