繁体   English   中英

如何更换 <NA> 用一个数字表示R中的单因素变量?

[英]How to replace <NA> with a number for a single factor variable in R?

  • 数据:数据
  • 变量:v1
  • 我已经尝试过了,但是它没有替换“ <NA>”(没有空格)

     cwm$v1 <- factor(cwm$v2) replace(cwm$v1, cwm$v1=="< NA >", 9) 

再次没有空格。 它仍然带“ <NA>”给我变量

符号<NA>是一个因数缺失的值:

> factor(c("a",NA,"b"))
[1] a    <NA> b   
Levels: a b

因此,您可以像所有缺少的值一样简单地使用is.na ,但是您可能会看到以下内容:

> v1 <- factor(c("a", NA,"b"))  
> v1[is.na(v1)] <- 9
> v1
[1] a    <NA> b   
Levels: a b
Warning message:
In `[<-.factor`(`*tmp*`, is.na(v1), value = 9) :
  invalid factor level, NA generated

原因很简单:9不是那个因素的水平。 因此,为了完成此任务,需要在转换为因子之前进行以下替换:

> v2 <- c("a",NA,"b")
> v2[is.na(v2)] <- 9
> v1 <- factor(v2)
> v1
[1] a 9 b
Levels: 9 a b

现在您有9个单独的级别。 如果您不希望这样做,则不应首先使用因子。 因此,如果您从一个因素开始,请先转换为character

> v1 <- factor(c("a", NA,"b"))
> v1 <- as.character(v1)
> v1[is.na(v1)] <- 9
> v1
[1] "a" "9" "b"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM