我想将NA从因子向量转换为值0
这是一个例子
myVec <- c(NA, 1, 2, NA)
myVec
[1] NA 1 2 NA
myVec <- factor(myVec)
[1] <NA> 1 2 <NA>
Levels: 1 2
for(i in 1:4){
if( is.na(myVec[i]) ) { myVec[i] = "0"}
}
Warning messages:
1: In `[<-.factor`(`*tmp*`, i, value = "0") :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, i, value = "0") :
invalid factor level, NA generated
答案 0 :(得分:2)
您可以将0
添加到可能的因子值
levels(myVec) <- 0:2
并将NA值替换为0
myVec[is.na(myVec)] <- 0
myVec
# [1] 0 0 1 0
# Levels: 0 1 2
或者,事先创建因子时......
(myvec <- factor(ifelse(is.na(myVec), 0, myVec)))
# [1] 0 1 2 0
# Levels: 0 1 2
答案 1 :(得分:1)
一种方法可能是创建一个逻辑向量,其中包含特定向量条目是否为na,然后将值0分配给每个匹配条目。 E.g
navector <- is.na (myVec)
myVec [navector] <- 0
实际上,甚至可以在一行中完成上述
myVec [ is.na (myVec) ] <- 0