[英]Sort character list in ascending order based on order of numerical list in r
[英]R and Python have different character sort order
我正在嘗試對 R 中的 dataframe 進行排序,發現排序順序與預期的 ascii 排序順序不匹配。 我需要按照 Python 對數據進行排序的方式對 dataframe 中的 R 進行排序。
df = df[do.call(order, df), ] # sort by all columns
如此處所示,Python 將大寫字母排在小寫字母之前:
$ python
Python 3.7.12 | packaged by conda-forge | (default, Oct 26 2021, 06:08:53)
>>> "A" < "a"
True
但是 R 將大寫字母排在小寫字母之后:
$ R
R version 3.2.0 (2015-04-16) -- "Full of Ingredients"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
Natural language support but running in an English locale
> "A" < "a"
[1] FALSE
> "A" > "a"
[1] TRUE
如何更改 R 排序行為以匹配標准 ascii 排序? 訂單 function 是否有一些參數,或一些配置設置來更改排序順序?
注意:這不是區分大小寫和不區分大小寫排序的區別——它比區分大小寫更糟糕——區分大小寫的排序具有非標准順序。
不同的語言環境使用不同的排序順序,包括大小寫規則:您可能想使用Sys.setlocale(locale = "C")
。 (這里有更多關於語言環境定義和案例排序順序的信息。)
?比較說明了一些關於特定於語言環境的排序......
“en_US”等語言環境的整理順序通常與“C”(應使用 ASCII)不同,這可能會令人驚訝。
...但據我所知,沒有明確說明案例順序(在頁面中搜索“案例”沒有得到任何結果)。
> Sys.getlocale()
[1] "en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8"
> "A" < "a"
[1] FALSE
> Sys.setlocale(locale = "C")
[1] "C/C/C/C/C/en_CA.UTF-8"
> "A" < "a"
[1] TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.