R语言如何对dataframe按列排序:指定值优先其余按字母序排列
R实现自定义排序方案
方法1:基础R实现
核心思路是构造双排序键:第一键判断列b是否为"S",逻辑值FALSE对应排序权重低于TRUE,因此"S"行会优先排列;第二键直接使用b列的字母顺序对剩余行排序。
代码如下:
# 构造排序索引 sorted_df <- df[order(df$b != "S", df$b), ]
输出结果:
a b 2 f S 5 d S 1 a L 3 n N 4 c R
完全符合需求。
方法2:dplyr包实现
如果习惯用tidyverse语法,可以用arrange函数实现相同逻辑:
library(dplyr) sorted_df <- df %>% arrange(b != "S", b)
排序逻辑和基础R方案完全一致,输出结果相同。
内容的提问来源于stack exchange,提问作者JP_SC
相关产品推荐
相关产品推荐

