我有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/