You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按字符类型排序数据行:先降序数字再指定顺序排<LCM/<LDM

实现data.table字符列的自定义排序

需求

对data.table中字符类型的Resultado列执行排序,规则如下:

  • 数字值(格式为逗号分隔小数,如"5,89")按降序排列,排在最前面
  • 以<开头的特殊标识排在数字之后,固定顺序为:先<LCM,再<LDM

测试数据

library(data.table)
dt <- data.table(Resultado = c("1,39", "5,89", "3,12", "0,25", "<LCM", "<LDM", "<LDM", "<LCM"))

解决方法

通过生成一个辅助排序键,将不同类型的内容映射为可用于排序的数值,再按键值降序排列即可满足需求:

# 生成排序键:数字转数值,特殊标识分配优先级
dt[, sort_key := fcase(
  Resultado == "<LCM", -1,
  Resultado == "<LDM", -2,
  default = as.numeric(gsub(",", ".", Resultado))
)]

# 按排序键降序排序
dt <- dt[order(-sort_key)]

# 查看排序后的结果
print(dt$Resultado)

输出结果

执行代码后,Resultado列的顺序为:

[1] "5,89"  "3,12"  "1,39"  "0,25"  "<LCM"  "<LCM"  "<LDM"  "<LDM"

内容的提问来源于stack exchange,提问作者Camilo Montes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:33:20