r - arrange() 把大写字母放在第一位

标签 r sorting dplyr

我通常使用 dplyr 中的 arrange() 函数对数据集进行排序,但它的行为方式我无法理解。我花了一点时间才弄清楚这个问题。我已经修复了我的代码并使用 order() 来做同样的事情,但现在我很好奇。我已经使用 arrange() 很久了,我想知道为什么这似乎是默认行为。当涉及大写字母时,它似乎无法按字母顺序排序——例如,它认为大写字母应该排在小写字母之前,即使后者在字母表中排在它们之前。我错过了什么吗?

这并不总是一个问题,但当我在通过 arrange() 排列后立即使用 tapply() 时,它确实成为了我的问题,假设数据会以与 tapply() 运行时排序相同的方式排序。这是 arrange() 将“苏联”放在“乌干达”和“乌克兰”之前的示例,而 order()(我认为这是正确的!)将其放在最后。

library(dplyr)
countries<-c("USSR","Uganda","Ukraine")
tmp<-data.frame(countries,stringsAsFactors=F)
tmp %>% arrange(countries) #orders it one way
tmp[order(tmp$countries),] #orders it another way
sort(tmp$countries) #sort agrees with order

我环顾四周看看其他人是否遇到过同样的问题,但没有看到任何东西。如果之前已经讨论过,请原谅我。

最佳答案

是的,@MrFlick 的评论是正确的。如果我这样做

Sys.setlocale("LC_COLLATE","C")

然后

tmp[order(tmp$countries),]

匹配 arrange() 的结果

关于r - arrange() 把大写字母放在第一位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640551/

相关文章:

r - 未使用的参数 - corrplot?

r - 使用 ggplot2 绘制带孔的土地

javascript - 如何对所有行的每列数组进行多重排序? (JavaScript)

r - 如何替换每组的第一个值

r - R中的截距和斜率函数

r - 如何在 do.call 中添加函数的更多参数?

java - 我的错误在哪里?

javascript - 这个 QuickSort 实现有什么问题?

r - 调试 : function to create multiple lags for multiple columns (dplyr)

r - 在 dplyr 中按组获取总和后计算列的行百分比