我有2个因素A和B: 因子A具有以下水平:
> levels (A)
[1] "1" "2" "3"
而B因子的含量如下:
> levels (B)
[1] "1" "2"
我想计算它们的水平重合的元素的比例,所以我使用以下内容:
C<-mean (A == B)
因为他们必须处于同一水平。我通过以下方式将B添加到“3”级别:
levels(B) <- c(levels(B), "3")
然而,这仅仅是一个例子,因为有时A的级别比B级更高,有时B的级别比A级更高。我想向每个级别插入最大级别数,这样它们就会相同而且我'能够计算C.我该怎么做?
答案 0 :(得分: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
我只是使用as.character
来获取级别的名称然后进行比较,而不是弄乱因素的级别来解决这个错误:
mean(as.character(a) == as.character(b))
# [1] 0.6666667