gpt4 book ai didi

R:按字母顺序重新排序因子的级别,但一个

转载 作者:行者123 更新时间:2023-12-04 14:36:16 24 4
gpt4 key购买 nike

我想重新排序一个因子的级别,以便新的顺序按字母顺序显示所有值,除了一个(其他)我希望它是最后一个。

假设我们有这个因素:

x <- factor(c("Yes", "No", "Other", "Yes", "No", "Other"))

> x
[1] Yes No Other Yes No Other
Levels: No Other Yes

我希望他们的级别按以下顺序显示:"is"、“否”、“其他”,而不是默认的。我知道在这个愚蠢的例子中,我可以通过以下方式轻松实现:
x2 <- factor(c("Yes", "No", "Other", "Yes", "No", "Other"), 
levels = c("Yes", "No", "Other"))

这会导致我想要的结果:
> x2
[1] Yes No Other Yes No Other
Levels: Yes No Other

但是,如果我们有一个具有多个不同级别的向量并且我们不想再次编写它们,那将不会那么有趣,毕竟除了一个之外,它们的顺序都很好!

有没有更好的方法来解决这个问题而不必从头开始编写整个向量?

最佳答案

您将不得不明确指定新 levels=你想要,但有比输入它们来移动它们更简单的方法。例如

x <- factor(c("Yes", "No", "Other", "Yes", "No", "Other"))
old.lvl<-levels(x)
x<-factor(x, levels=c(sort(old.lvl[old.lvl!="Other"], decreasing=T), "Other"))
x
# [1] Yes No Other Yes No Other
# Levels: Yes No Other

当然,这是一个有点愚蠢的例子,但对于因子水平,并不仅仅有“移动一个”选项。您可以利用 R 丰富的索引操作来随意移动它们。

关于R:按字母顺序重新排序因子的级别,但一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31638771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com