2016-09-08 104 views
1

我有一个因子列,我得到一个缺失的等级,为什么R会创建这个缺失的等级?R中的缺失因子水平

d0s$y 
[1] E E E E E E G G G G G G G P P P P P P P 
Levels: E G P 

levels(d0s$y) 
[1] "" "E" "G" "P" 

回答

1

这可能是有空白""数据集中的子集化之前。一种方法是调用droplevels删除未使用的水平

d0s$y <- droplevels(d0s$y) 

或致电factor再次

d0s$y <- factor(d0s$y) 

然而,它也可以是该""元素已经存在,但因为它是factor打印选项不显示它

y1 <- factor(rep(c("E", "G", "P", ""), each = 3)) 
y1 
#[1] E E E G G G P P P  
#Levels: E G P 
levels(y1) 
#[1] "" "E" "G" "P" 

假设,如果我们子集 'Y1'

y2 <- y1[y1 %in% c("E", "G", "P")] 
levels(y2) #the unused levels are still there 
#[1] "" "E" "G" "P" 

,除非我们放弃那些水平

levels(droplevels(y2)) 
#[1] "E" "G" "P"