R 如何根据其他类别对系数级别进行排序?

R 如何根据其他类别对系数级别进行排序?,r,dataframe,R,Dataframe,假设我有一个包含两个因素的数据框,我想对一个因素的级别进行排序,并按第二类进行分组 name <- letters[1:8] category <- factor(sample(1:2, 8, replace=T), labels=c("A", "B")) my.df <- data.frame(name=name, category=category) 而级别(my.df$name)的输出是: [1] "a" "b" "c" "d" "e" "f" "g" "h" 假设n

假设我有一个包含两个因素的数据框,我想对一个因素的级别进行排序,并按第二类进行分组

name <- letters[1:8]
category <- factor(sample(1:2, 8, replace=T), labels=c("A", "B"))
my.df <- data.frame(name=name, category=category)
级别(my.df$name)
的输出是:

[1] "a" "b" "c" "d" "e" "f" "g" "h"
假设
name
中的某个级别始终对应于我的数据中
类别中的同一级别,我如何对名称的级别进行相应排序?

这就是您想要的吗

> levels(my.df$name) <- as.character(unique(my.df[order(my.df$category),]$name))
> levels(my.df$name)
[1] "b" "c" "e" "f" "a" "d" "g" "h"
>级别(my.df$name)级别(my.df$name)
[1] “b”“c”“e”“f”“a”“d”“g”“h”

我认为这可能比目前任何一种解决方案都要干净:

    my.df <-
structure(list(name = structure(1:8, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h"), class = "factor"), category = structure(c(1L, 
1L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("A", "B"), class = "factor")), .Names = c("name", 
"category"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8"))

 with(my.df, name[order(category)] )
[1] b d e h a c f g
Levels: a b c d e f g h

my.df我自己用
交互
功能排序找到了一个答案,但我不能再发布8小时。代码是
levels(df.test$name)[带有(df.test,interaction(name,category,drop=T))]
。同时,有没有其他圆滑的答案?我会重新安排因子的级别,而不是替换它们,但这基本上就是我要寻找的
my.df$name,它更干净,但是
unique
调用对于除此简单数据之外的任何内容都是必不可少的。也许我应该更明确地说明
name
中的多个条目。我道歉。
    my.df <-
structure(list(name = structure(1:8, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h"), class = "factor"), category = structure(c(1L, 
1L, 2L, 2L, 2L, 1L, 1L, 1L), .Label = c("A", "B"), class = "factor")), .Names = c("name", 
"category"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8"))

 with(my.df, name[order(category)] )
[1] b d e h a c f g
Levels: a b c d e f g h