这是我所面对的一个简单例子.我有我的因子水平,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"
Run Code Online (Sandbox Code Playgroud)
我们可以指定'f'列levels的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"
Run Code Online (Sandbox Code Playgroud)
或者根据@Ben Bolker的建议,变体就是
df <- transform(df,f=factor(f,levels=mixedsort(levels(f),
decreasing=TRUE)))
Run Code Online (Sandbox Code Playgroud)
我想这-被解释为minus@Gregor在评论中建议的标志.
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |