是否可以比較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
是否可以比較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
轉換爲字符,然後比較:
# 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倍。
你也可以看看'all.equal',具體取決於'compare'的含義。 –
@David_B我不確定在這種情況下如何使用all.equal。 – zx8754
請問你能解釋一下***是什麼意思,比較兩個因素***。我不清楚。 – user2100721
@ user2100721我假設他們想知道重疊的比例。在我的帖子中,來自'5','3/5 = 0.6'的重疊是'3'。請注意,「TRUE/FALSE」隱式轉換爲「1/0」,即:TRUE + TRUE = 2。 – zx8754
@ zx8754謝謝。明白了你的觀點。 – user2100721