gpt4 book ai didi

重新排序 R data.frame 中一个因子的水平

转载 作者:行者123 更新时间:2023-12-04 09:43:26 24 4
gpt4 key购买 nike

这是我所面临的一个简单示例。我有我的因子水平 B-1、B-2、B-9、B-10、B-11 并希望按上面给定的顺序排列它们。在这里我可以轻松地重新排列级别,但是,在我的数据中我确实有复杂的结构并且想通过一些编码来完成。我想知道如何按逻辑顺序排列这些因素水平。

set.seed(12345)
f <- rep(c("B-1", "B-2", "B-9", "B-10", "B-11"), each=3)
Y <- runif(n=15, min=100, max=1000)
df <- data.frame(f, Y)


levels(df$f)
[1] "B-1" "B-10" "B-11" "B-2" "B-9"

library(gtools)
mixedsort(df$f)

[1] B-1 B-1 B-1 B-10 B-10 B-10 B-11 B-11 B-11 B-2 B-2 B-2 B-9 B-9 B-9

Levels: B-1 B-10 B-11 B-2 B-9

df2 <- df[mixedorder(df$f), ]


df3 <- within(df,
Position <- factor(f,
levels=names(sort(table(f),
decreasing=TRUE))))

levels(df3$Position)
[1] "B-1" "B-10" "B-11" "B-2" "B-9"

已编辑

现在我可以找到 this question 的解决方案了当我发布它时立即关闭。感谢@akrun 的帮助。

最佳答案

我们可以将 levels 指定为 'f' 列的 mixedsorted levels

 df$f <- factor(df$f, levels=mixedsort(levels(df$f), decreasing=TRUE))
levels(df$f)
#[1] "B-1" "B-2" "B-9" "B-10" "B-11"

或者如@Ben Bolker 所建议的那样,一种变体是

 df <- transform(df,f=factor(f,levels=mixedsort(levels(f), 
decreasing=TRUE)))

我猜 - 被解释为 minus 符号,正如@Gregor 在评论中所建议的那样。

关于重新排序 R data.frame 中一个因子的水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360852/

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