比较两个相同长度但不同水平的因素

vij*_*jay 2 r r-factor

是否有可能比较R中相同长度不同水平的两个因素?

A <- factor(1:5)

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

B <- factor(c(1:3,6,6))

str(B)
 Factor w/ 4 levels "1","2","3","6": 1 2 3 4 4
Run Code Online (Sandbox Code Playgroud)

运行这行代码

mean(A == B)
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

Ops.factor(A,B)中的错误:因素的级别集是不同的

zx8*_*754 8

转换为字符然后比较:

# 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)
Run Code Online (Sandbox Code Playgroud)

Ops.factor(A,B)中的错误:因素的级别集是不同的

mean(as.character(A) == as.character(B))
# [1] 0.6
Run Code Online (Sandbox Code Playgroud)

或者另一种方法

mean(levels(A)[A] == levels(B)[B])
Run Code Online (Sandbox Code Playgroud)

这在1e8数据集上慢2倍.