2016-06-22 187 views
1

是否可以比較R中相同長度不同水平的兩個因子?比較相同長度但不同水平的兩個因子

A: Factor w/207 levels, length 2000 
B: Factor w/224 levels, length 2000 

運行此行代碼

mean(A == B) 

給了我以下錯誤:

Error in Ops.factor(A, B) : level sets of factors are different

+1

請問你能解釋一下***是什麼意思,比較兩個因素***。我不清楚。 – user2100721

+1

@ user2100721我假設他們想知道重疊的比例。在我的帖子中,來自'5','3/5 = 0.6'的重疊是'3'。請注意,「TRUE/FALSE」隱式轉換爲「1/0」,即:TRUE + TRUE = 2。 – zx8754

+1

@ zx8754謝謝。明白了你的觀點。 – user2100721

回答

7

轉換爲字符,然後比較:

# data 
A <- factor(1:5) 
B <- factor(c(1:3,6,6)) 

str(A) 
# Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 
str(B) 
# Factor w/ 4 levels "1","2","3","6": 1 2 3 4 4 

mean(A == B) 

Error in Ops.factor(A, B) : level sets of factors are different

mean(as.character(A) == as.character(B)) 
# [1] 0.6 

或者另一方法將是

mean(levels(A)[A] == levels(B)[B]) 

其上的1E8數據集更慢的2倍。

+0

你也可以看看'all.equal',具體取決於'compare'的含義。 –

+0

@David_B我不確定在這種情況下如何使用all.equal。 – zx8754

相關問題