使用tidyverse的arrange按字母顺序排列数据框列遇异常
不区分大小写的字符串排序解决方案
默认的arrange()是按ASCII码排序的,大写字母的ASCII值小于小写字母,所以会出现所有大写字母排在前面的情况。要实现不区分大小写的字母序排序,有两种简单可行的方法:
方法1:基于转换后的大小写列排序
在arrange()里用str_to_lower()(或str_to_upper())统一转换列的大小写后作为排序依据,原列的内容会保持不变:
library(tidyverse) df <- data.frame(col1 = c("A","b","B","C","c")) df %>% arrange(str_to_lower(col1))
执行后得到的结果:
col1 1 A 2 b 3 B 4 C 5 c
方法2:指定locale参数
如果需要适配特定语言的排序规则,可以通过.locale参数指定支持不区分大小写排序的区域设置,比如英文环境:
df %>% arrange(col1, .locale = "en_US.UTF-8")
注意:不同操作系统支持的locale值可能存在差异,需要根据实际环境调整具体参数值。
内容的提问来源于stack exchange,提问作者frank
相关产品推荐
相关产品推荐

