为这两个因素添加最大级别

Avi*_*Avi 2 r levels

我有2个因素A和B:因子A具有以下水平:

> levels (A)
[1] "1" "2" "3"
Run Code Online (Sandbox Code Playgroud)

B因子有以下几个级别:

> levels (B)
[1] "1" "2"
Run Code Online (Sandbox Code Playgroud)

我想计算它们的水平重合的元素的比例,所以我使用以下内容:

C<-mean (A == B)
Run Code Online (Sandbox Code Playgroud)

因为它们必须具有相同的水平.我在B中添加了"3"级别:

levels(B) <- c(levels(B), "3")
Run Code Online (Sandbox Code Playgroud)

然而,这仅仅是一个例子,因为有时A的级别比B级更高,有时B的级别比A级更高.我想向每个级别插入最大级别的数量,这样它们就会相同而且我将能够计算C.我该怎么办?

jos*_*ber 6

听起来你正试图检查两个因素的水平重合的时间比例,当因子有不同的水平集时,会遇到错误; 也许是这样的:

a <- factor(c("a", "b", "c"))
b <- factor(c("b", "b", "c"))
a == b
# Error in Ops.factor(a, b) : level sets of factors are different
Run Code Online (Sandbox Code Playgroud)

而不是搞乱这些因素的水平来摆脱这个错误,我只是as.character用来获取级别的名称,然后比较:

mean(as.character(a) == as.character(b))
# [1] 0.6666667
Run Code Online (Sandbox Code Playgroud)