开发者

Is there an easy way to restore a factor object from its summary?

For example:

x <- c('开发者_C百科A', 'A', 'B', 'C', 'C', 'C')
x <- as.factor(x)
print(summary(x))

will give the result:

A B C 
2 1 3 

Now if I have a named vector:

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

How can I easily retain the x in the above example without caring about their order?

Thanks in advance.


With your specific example, you can use rep, but take care: this is not a general solution. In fact, I believe a general solution is impossible, because summary discards information about the original vector.

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

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

The reason that this is not general is that summary really just give a contingency table, thus losing information about the position of the elements. For example, if I take your vector and append a few more A characters to the end, look what happens:

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"

(You now have a sorted vector with all of the correct elements, but not in the correct order.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜