我有2个因素A和B:
因子A具有以下级别:

> levels (A)
[1] "1" "2" "3"

而因子B具有以下级别:
> levels (B)
[1] "1" "2"

我想计算其级别一致的元素的比例,因此我使用以下内容:
C<-mean (A == B)

由于它们必须处于同一水平。我通过以下方式将B的“3”级添加到B:
levels(B) <- c(levels(B), "3")

但是,这只是一个示例,因为有时A的级别比B多,有时B的级别比A多。我想在每个级别中插入最大数量的级别,这样它们就可以相同并且我可以计算C。我该怎么做?

最佳答案

听起来您正在尝试检查两个因子的水平重合的时间比例,而当因子具有不同的水平集时却出错。也许像这样:

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

关于r - 将两个因素的最大值相加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32831466/

10-12 13:41