How can I keep NA when I change levels

后端 未结 2 1631
南旧
南旧 2021-01-23 06:03

I build a vector of factors containing NA.

my_vec <- factor(c(NA,\"a\",\"b\"),exclude=NULL)
levels(my_vec)
# [1] \"a\" \"b\" NA 

I change on

2条回答
  •  遥遥无期
    2021-01-23 07:02

    You have to quote NA, otherwise R treats it as a null value rather than a factor level. Factor levels sort alphabetically by default, but obviously that's not always useful, so you can specify a different order by passing a new list order to levels()

    require(plyr)
    my_vec <- factor(c("NA","a","b1","b2"))
    vec2 <- revalue(my_vec,c("b1"="c","b2"="c"))
    
    #now reorder levels
    
    my_vec2 <- factor(vec2, levels(vec2)[c(1,3,2)])
    
    Levels: a NA c
    

提交回复
热议问题