簡體   English   中英

R 和 Python 具有不同的字符排序順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM