在試圖運行lm()
時,R返回了小於2級的因子的錯誤。下面是一個簡短的表格,其中列出了類型,以及「等級」的3個度量。來自unique()和nlevels()的輸出不匹配
爲什麼length(unique(x[,i]))
不能提供與nlevels(x[,i])
相同的輸出?
在試圖運行lm()
時,R返回了小於2級的因子的錯誤。下面是一個簡短的表格,其中列出了類型,以及「等級」的3個度量。來自unique()和nlevels()的輸出不匹配
爲什麼length(unique(x[,i]))
不能提供與nlevels(x[,i])
相同的輸出?
一個可能的原因是,NA
算作獨特的價值,但在因素不是一個級別:
> a <- as.factor(c("A","B","A",NA))
> unique(a)
[1] A B <NA>
Levels: A B
> length(unique(a))
[1] 3
> levels(a)
[1] "A" "B"
> nlevels(a)
[1] 2
這是一個有價值的提示,但只會計入識別1級。在我的第四個因素中,我有10個獨特的值,nlevels = 0。 – braxtonlewis
@braxtonlewis,你可能注意到那些'nlevels()= 0'記錄都是整數或數字。這是因爲'unique'可以應用於所有類型,但'nlevels'只能應用於'factor'。 –
你可以有比唯一值以上的水平......看'X =因子(c(「a」,「b」),levels = c(「a」,「b」,「c」)))。一種可能發生的方式是通過對數據進行子集化。 'd1 = data.frame(x = letters [1:4]); d2 = d1 [d1 $ x%in%c(「a」,「b」),,drop = FALSE]; str(d2 $ x)'。 'droplevels'是一個有用的功能 – user20650