有没有一种简单的方法可以从其摘要中恢复因子对象?

时间:2011-10-07 08:53:25

标签: r

例如:

x <- c('A', 'A', 'B', 'C', 'C', 'C')
x <- as.factor(x)
print(summary(x))

将给出结果:

A B C 
2 1 3 

现在,如果我有一个命名向量:

nv <- c(A=2, B=1, C=3)

如何在不关心订单的情况下轻松保留上述示例中的x

提前致谢。

1 个答案:

答案 0 :(得分:5)

根据您的具体示例,您可以使用rep,但请注意:这不是一般解决方案。事实上,我认为通用解决方案是不可能的,因为summary会丢弃有关原始向量的信息。

x <- factor(c('A', 'A', 'B', 'C', 'C', 'C'))
xs <- summary(x)

rep(names(xs), times=xs)
[1] "A" "A" "B" "C" "C" "C"

这不是一般性的原因是summary实际上只是给出一个列联表,从而丢失了关于元素位置的信息。例如,如果我使用你的向量并在结尾追加几个A个字符,看看会发生什么:

x <- factor(c('A', 'A', 'B', 'C', 'C', 'C', 'A', 'A'))
xs <- summary(x)

rep(names(xs), times=xs)
[1] "A" "A" "A" "A" "B" "C" "C" "C"

(您现在有一个带有所有正确元素的排序向量,但顺序不正确。)