使用R中的预定义列表进行排序

the*_*ech 0 r

我正在尝试对此数据框进行排序:

 Age  grade name
 21.0   6   John 
 21.0   6   Paul
 22.8   4   Jake 
Run Code Online (Sandbox Code Playgroud)

借助一系列名称:

Paul, Jake, John
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

red*_*ode 5

数据生成:

txt <- 
"Age  grade name
21.0   6   John 
21.0   6   Paul
22.8   4   Jake "
df <- read.table(text=txt, header=T)
Run Code Online (Sandbox Code Playgroud)

为了支持自定义排序,您可以将列转换为具有指定级别的因子:

df$name <- factor(df$name, levels=c("Paul", "Jake", "John"))
Run Code Online (Sandbox Code Playgroud)

现在订购df[order(df$name),]给出:

   Age grade name
2 21.0     6 Paul
3 22.8     4 Jake
1 21.0     6 John
Run Code Online (Sandbox Code Playgroud)

  • 应该添加一个注释,以明确"order"作用于因子的数字顺序,而不是它们的alpha排序顺序. (3认同)