我有一个数据框,其中有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值。 任何想法?
答案 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
值的数量。