如何将 NA 从因子向量转换为 0 值
How to convert NA from factor vector to value of 0
我想将 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
一种方法可能是创建一个逻辑向量,其中包含特定向量条目是否为 na,然后将值 0 分配给每个匹配的条目。例如
navector <- is.na (myVec)
myVec [navector] <- 0
其实上面一行甚至可以搞定
myVec [ is.na (myVec) ] <- 0
您可以将 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
我想将 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
一种方法可能是创建一个逻辑向量,其中包含特定向量条目是否为 na,然后将值 0 分配给每个匹配的条目。例如
navector <- is.na (myVec)
myVec [navector] <- 0
其实上面一行甚至可以搞定
myVec [ is.na (myVec) ] <- 0
您可以将 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